// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: org/jbpm/marshalling/jbpmmessages.proto

package org.jbpm.marshalling.impl;

public final class JBPMMessages {
  private JBPMMessages() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registry.add(org.jbpm.marshalling.impl.JBPMMessages.processInstance);
    registry.add(org.jbpm.marshalling.impl.JBPMMessages.workItem);
    registry.add(org.jbpm.marshalling.impl.JBPMMessages.timerId);
    registry.add(org.jbpm.marshalling.impl.JBPMMessages.processTimer);
    registry.add(org.jbpm.marshalling.impl.JBPMMessages.procTimer);
  }
  public interface ProcessInstanceOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string process_type = 1;
    /**
     * <code>optional string process_type = 1;</code>
     */
    boolean hasProcessType();
    /**
     * <code>optional string process_type = 1;</code>
     */
    java.lang.String getProcessType();
    /**
     * <code>optional string process_type = 1;</code>
     */
    com.google.protobuf.ByteString
        getProcessTypeBytes();

    // optional int64 id = 2;
    /**
     * <code>optional int64 id = 2;</code>
     */
    boolean hasId();
    /**
     * <code>optional int64 id = 2;</code>
     */
    long getId();

    // optional string process_id = 3;
    /**
     * <code>optional string process_id = 3;</code>
     */
    boolean hasProcessId();
    /**
     * <code>optional string process_id = 3;</code>
     */
    java.lang.String getProcessId();
    /**
     * <code>optional string process_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getProcessIdBytes();

    // optional int32 state = 4;
    /**
     * <code>optional int32 state = 4;</code>
     */
    boolean hasState();
    /**
     * <code>optional int32 state = 4;</code>
     */
    int getState();

    // optional int64 node_instance_counter = 5;
    /**
     * <code>optional int64 node_instance_counter = 5;</code>
     */
    boolean hasNodeInstanceCounter();
    /**
     * <code>optional int64 node_instance_counter = 5;</code>
     */
    long getNodeInstanceCounter();

    // optional string process_xml = 11;
    /**
     * <code>optional string process_xml = 11;</code>
     */
    boolean hasProcessXml();
    /**
     * <code>optional string process_xml = 11;</code>
     */
    java.lang.String getProcessXml();
    /**
     * <code>optional string process_xml = 11;</code>
     */
    com.google.protobuf.ByteString
        getProcessXmlBytes();

    // optional int64 parent_process_instance_id = 12;
    /**
     * <code>optional int64 parent_process_instance_id = 12;</code>
     */
    boolean hasParentProcessInstanceId();
    /**
     * <code>optional int64 parent_process_instance_id = 12;</code>
     */
    long getParentProcessInstanceId();

    // optional string description = 15;
    /**
     * <code>optional string description = 15;</code>
     */
    boolean hasDescription();
    /**
     * <code>optional string description = 15;</code>
     */
    java.lang.String getDescription();
    /**
     * <code>optional string description = 15;</code>
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();

    // repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
     */
    java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance> 
        getSwimlaneContextList();
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance getSwimlaneContext(int index);
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
     */
    int getSwimlaneContextCount();
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
     */
    java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstanceOrBuilder> 
        getSwimlaneContextOrBuilderList();
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstanceOrBuilder getSwimlaneContextOrBuilder(
        int index);

    // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
     */
    java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> 
        getNodeInstanceList();
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance getNodeInstance(int index);
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
     */
    int getNodeInstanceCount();
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
     */
    java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> 
        getNodeInstanceOrBuilderList();
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder getNodeInstanceOrBuilder(
        int index);

    // repeated .org.jbpm.marshalling.Variable variable = 8;
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
     */
    java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> 
        getVariableList();
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index);
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
     */
    int getVariableCount();
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
     */
    java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
        getVariableOrBuilderList();
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
        int index);

    // repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
     */
    java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance> 
        getExclusiveGroupList();
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance getExclusiveGroup(int index);
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
     */
    int getExclusiveGroupCount();
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
     */
    java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder> 
        getExclusiveGroupOrBuilderList();
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder getExclusiveGroupOrBuilder(
        int index);

    // repeated string completedNodeIds = 13;
    /**
     * <code>repeated string completedNodeIds = 13;</code>
     */
    java.util.List<java.lang.String>
    getCompletedNodeIdsList();
    /**
     * <code>repeated string completedNodeIds = 13;</code>
     */
    int getCompletedNodeIdsCount();
    /**
     * <code>repeated string completedNodeIds = 13;</code>
     */
    java.lang.String getCompletedNodeIds(int index);
    /**
     * <code>repeated string completedNodeIds = 13;</code>
     */
    com.google.protobuf.ByteString
        getCompletedNodeIdsBytes(int index);

    // repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;
    /**
     * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
     */
    java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> 
        getIterationLevelsList();
    /**
     * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.IterationLevel getIterationLevels(int index);
    /**
     * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
     */
    int getIterationLevelsCount();
    /**
     * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
     */
    java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> 
        getIterationLevelsOrBuilderList();
    /**
     * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder getIterationLevelsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code org.jbpm.marshalling.ProcessInstance}
   */
  public static final class ProcessInstance extends
      com.google.protobuf.GeneratedMessage
      implements ProcessInstanceOrBuilder {
    // Use ProcessInstance.newBuilder() to construct.
    private ProcessInstance(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ProcessInstance(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ProcessInstance defaultInstance;
    public static ProcessInstance getDefaultInstance() {
      return defaultInstance;
    }

    public ProcessInstance getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ProcessInstance(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        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;
              processType_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              id_ = input.readInt64();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              processId_ = input.readBytes();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              state_ = input.readInt32();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              nodeInstanceCounter_ = input.readInt64();
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                swimlaneContext_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance>();
                mutable_bitField0_ |= 0x00000100;
              }
              swimlaneContext_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.PARSER, extensionRegistry));
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                nodeInstance_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance>();
                mutable_bitField0_ |= 0x00000200;
              }
              nodeInstance_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.PARSER, extensionRegistry));
              break;
            }
            case 66: {
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                variable_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.Variable>();
                mutable_bitField0_ |= 0x00000400;
              }
              variable_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.Variable.PARSER, extensionRegistry));
              break;
            }
            case 82: {
              if (!((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
                exclusiveGroup_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance>();
                mutable_bitField0_ |= 0x00000800;
              }
              exclusiveGroup_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.PARSER, extensionRegistry));
              break;
            }
            case 90: {
              bitField0_ |= 0x00000020;
              processXml_ = input.readBytes();
              break;
            }
            case 96: {
              bitField0_ |= 0x00000040;
              parentProcessInstanceId_ = input.readInt64();
              break;
            }
            case 106: {
              if (!((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
                completedNodeIds_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00001000;
              }
              completedNodeIds_.add(input.readBytes());
              break;
            }
            case 114: {
              if (!((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
                iterationLevels_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel>();
                mutable_bitField0_ |= 0x00002000;
              }
              iterationLevels_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.PARSER, extensionRegistry));
              break;
            }
            case 122: {
              bitField0_ |= 0x00000080;
              description_ = 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_ & 0x00000100) == 0x00000100)) {
          swimlaneContext_ = java.util.Collections.unmodifiableList(swimlaneContext_);
        }
        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
          nodeInstance_ = java.util.Collections.unmodifiableList(nodeInstance_);
        }
        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
          variable_ = java.util.Collections.unmodifiableList(variable_);
        }
        if (((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
          exclusiveGroup_ = java.util.Collections.unmodifiableList(exclusiveGroup_);
        }
        if (((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
          completedNodeIds_ = new com.google.protobuf.UnmodifiableLazyStringList(completedNodeIds_);
        }
        if (((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
          iterationLevels_ = java.util.Collections.unmodifiableList(iterationLevels_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.Builder.class);
    }

    public static com.google.protobuf.Parser<ProcessInstance> PARSER =
        new com.google.protobuf.AbstractParser<ProcessInstance>() {
      public ProcessInstance parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ProcessInstance(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<ProcessInstance> getParserForType() {
      return PARSER;
    }

    /**
     * Protobuf enum {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceType}
     */
    public enum NodeInstanceType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>RULE_SET_NODE = 0;</code>
       */
      RULE_SET_NODE(0, 0),
      /**
       * <code>HUMAN_TASK_NODE = 1;</code>
       */
      HUMAN_TASK_NODE(1, 1),
      /**
       * <code>WORK_ITEM_NODE = 2;</code>
       */
      WORK_ITEM_NODE(2, 2),
      /**
       * <code>SUBPROCESS_NODE = 3;</code>
       */
      SUBPROCESS_NODE(3, 3),
      /**
       * <code>MILESTONE_NODE = 4;</code>
       */
      MILESTONE_NODE(4, 4),
      /**
       * <code>EVENT_NODE = 5;</code>
       */
      EVENT_NODE(5, 5),
      /**
       * <code>TIMER_NODE = 6;</code>
       */
      TIMER_NODE(6, 6),
      /**
       * <code>JOIN_NODE = 7;</code>
       */
      JOIN_NODE(7, 7),
      /**
       * <code>STATE_NODE = 8;</code>
       */
      STATE_NODE(8, 8),
      /**
       * <code>COMPOSITE_CONTEXT_NODE = 9;</code>
       */
      COMPOSITE_CONTEXT_NODE(9, 9),
      /**
       * <code>FOR_EACH_NODE = 10;</code>
       */
      FOR_EACH_NODE(10, 10),
      /**
       * <code>DYNAMIC_NODE = 11;</code>
       */
      DYNAMIC_NODE(11, 11),
      /**
       * <code>EVENT_SUBPROCESS_NODE = 12;</code>
       */
      EVENT_SUBPROCESS_NODE(12, 12),
      ;

      /**
       * <code>RULE_SET_NODE = 0;</code>
       */
      public static final int RULE_SET_NODE_VALUE = 0;
      /**
       * <code>HUMAN_TASK_NODE = 1;</code>
       */
      public static final int HUMAN_TASK_NODE_VALUE = 1;
      /**
       * <code>WORK_ITEM_NODE = 2;</code>
       */
      public static final int WORK_ITEM_NODE_VALUE = 2;
      /**
       * <code>SUBPROCESS_NODE = 3;</code>
       */
      public static final int SUBPROCESS_NODE_VALUE = 3;
      /**
       * <code>MILESTONE_NODE = 4;</code>
       */
      public static final int MILESTONE_NODE_VALUE = 4;
      /**
       * <code>EVENT_NODE = 5;</code>
       */
      public static final int EVENT_NODE_VALUE = 5;
      /**
       * <code>TIMER_NODE = 6;</code>
       */
      public static final int TIMER_NODE_VALUE = 6;
      /**
       * <code>JOIN_NODE = 7;</code>
       */
      public static final int JOIN_NODE_VALUE = 7;
      /**
       * <code>STATE_NODE = 8;</code>
       */
      public static final int STATE_NODE_VALUE = 8;
      /**
       * <code>COMPOSITE_CONTEXT_NODE = 9;</code>
       */
      public static final int COMPOSITE_CONTEXT_NODE_VALUE = 9;
      /**
       * <code>FOR_EACH_NODE = 10;</code>
       */
      public static final int FOR_EACH_NODE_VALUE = 10;
      /**
       * <code>DYNAMIC_NODE = 11;</code>
       */
      public static final int DYNAMIC_NODE_VALUE = 11;
      /**
       * <code>EVENT_SUBPROCESS_NODE = 12;</code>
       */
      public static final int EVENT_SUBPROCESS_NODE_VALUE = 12;


      public final int getNumber() { return value; }

      public static NodeInstanceType valueOf(int value) {
        switch (value) {
          case 0: return RULE_SET_NODE;
          case 1: return HUMAN_TASK_NODE;
          case 2: return WORK_ITEM_NODE;
          case 3: return SUBPROCESS_NODE;
          case 4: return MILESTONE_NODE;
          case 5: return EVENT_NODE;
          case 6: return TIMER_NODE;
          case 7: return JOIN_NODE;
          case 8: return STATE_NODE;
          case 9: return COMPOSITE_CONTEXT_NODE;
          case 10: return FOR_EACH_NODE;
          case 11: return DYNAMIC_NODE;
          case 12: return EVENT_SUBPROCESS_NODE;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<NodeInstanceType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap<NodeInstanceType>
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<NodeInstanceType>() {
              public NodeInstanceType findValueByNumber(int number) {
                return NodeInstanceType.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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.getDescriptor().getEnumTypes().get(0);
      }

      private static final NodeInstanceType[] VALUES = values();

      public static NodeInstanceType 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 NodeInstanceType(int index, int value) {
        this.index = index;
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceType)
    }

    public interface SwimlaneContextInstanceOrBuilder
        extends com.google.protobuf.MessageOrBuilder {

      // optional string swimlane = 1;
      /**
       * <code>optional string swimlane = 1;</code>
       */
      boolean hasSwimlane();
      /**
       * <code>optional string swimlane = 1;</code>
       */
      java.lang.String getSwimlane();
      /**
       * <code>optional string swimlane = 1;</code>
       */
      com.google.protobuf.ByteString
          getSwimlaneBytes();

      // optional string actor_id = 2;
      /**
       * <code>optional string actor_id = 2;</code>
       */
      boolean hasActorId();
      /**
       * <code>optional string actor_id = 2;</code>
       */
      java.lang.String getActorId();
      /**
       * <code>optional string actor_id = 2;</code>
       */
      com.google.protobuf.ByteString
          getActorIdBytes();
    }
    /**
     * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance}
     */
    public static final class SwimlaneContextInstance extends
        com.google.protobuf.GeneratedMessage
        implements SwimlaneContextInstanceOrBuilder {
      // Use SwimlaneContextInstance.newBuilder() to construct.
      private SwimlaneContextInstance(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private SwimlaneContextInstance(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

      private static final SwimlaneContextInstance defaultInstance;
      public static SwimlaneContextInstance getDefaultInstance() {
        return defaultInstance;
      }

      public SwimlaneContextInstance getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private SwimlaneContextInstance(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          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;
                swimlane_ = input.readBytes();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                actorId_ = 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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_SwimlaneContextInstance_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_SwimlaneContextInstance_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.Builder.class);
      }

      public static com.google.protobuf.Parser<SwimlaneContextInstance> PARSER =
          new com.google.protobuf.AbstractParser<SwimlaneContextInstance>() {
        public SwimlaneContextInstance parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new SwimlaneContextInstance(input, extensionRegistry);
        }
      };

      @java.lang.Override
      public com.google.protobuf.Parser<SwimlaneContextInstance> getParserForType() {
        return PARSER;
      }

      private int bitField0_;
      // optional string swimlane = 1;
      public static final int SWIMLANE_FIELD_NUMBER = 1;
      private java.lang.Object swimlane_;
      /**
       * <code>optional string swimlane = 1;</code>
       */
      public boolean hasSwimlane() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string swimlane = 1;</code>
       */
      public java.lang.String getSwimlane() {
        java.lang.Object ref = swimlane_;
        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()) {
            swimlane_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string swimlane = 1;</code>
       */
      public com.google.protobuf.ByteString
          getSwimlaneBytes() {
        java.lang.Object ref = swimlane_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          swimlane_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      // optional string actor_id = 2;
      public static final int ACTOR_ID_FIELD_NUMBER = 2;
      private java.lang.Object actorId_;
      /**
       * <code>optional string actor_id = 2;</code>
       */
      public boolean hasActorId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string actor_id = 2;</code>
       */
      public java.lang.String getActorId() {
        java.lang.Object ref = actorId_;
        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()) {
            actorId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string actor_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getActorIdBytes() {
        java.lang.Object ref = actorId_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          actorId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private void initFields() {
        swimlane_ = "";
        actorId_ = "";
      }
      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, getSwimlaneBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getActorIdBytes());
        }
        getUnknownFields().writeTo(output);
      }

      private int 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, getSwimlaneBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getActorIdBytes());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstanceOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_SwimlaneContextInstance_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_SwimlaneContextInstance_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.Builder.class);
        }

        // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.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();
          swimlane_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          actorId_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_SwimlaneContextInstance_descriptor;
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance getDefaultInstanceForType() {
          return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.getDefaultInstance();
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance build() {
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance buildPartial() {
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.swimlane_ = swimlane_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.actorId_ = actorId_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance) {
            return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance other) {
          if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.getDefaultInstance()) return this;
          if (other.hasSwimlane()) {
            bitField0_ |= 0x00000001;
            swimlane_ = other.swimlane_;
            onChanged();
          }
          if (other.hasActorId()) {
            bitField0_ |= 0x00000002;
            actorId_ = other.actorId_;
            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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // optional string swimlane = 1;
        private java.lang.Object swimlane_ = "";
        /**
         * <code>optional string swimlane = 1;</code>
         */
        public boolean hasSwimlane() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional string swimlane = 1;</code>
         */
        public java.lang.String getSwimlane() {
          java.lang.Object ref = swimlane_;
          if (!(ref instanceof java.lang.String)) {
            java.lang.String s = ((com.google.protobuf.ByteString) ref)
                .toStringUtf8();
            swimlane_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string swimlane = 1;</code>
         */
        public com.google.protobuf.ByteString
            getSwimlaneBytes() {
          java.lang.Object ref = swimlane_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            swimlane_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string swimlane = 1;</code>
         */
        public Builder setSwimlane(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          swimlane_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string swimlane = 1;</code>
         */
        public Builder clearSwimlane() {
          bitField0_ = (bitField0_ & ~0x00000001);
          swimlane_ = getDefaultInstance().getSwimlane();
          onChanged();
          return this;
        }
        /**
         * <code>optional string swimlane = 1;</code>
         */
        public Builder setSwimlaneBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          swimlane_ = value;
          onChanged();
          return this;
        }

        // optional string actor_id = 2;
        private java.lang.Object actorId_ = "";
        /**
         * <code>optional string actor_id = 2;</code>
         */
        public boolean hasActorId() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional string actor_id = 2;</code>
         */
        public java.lang.String getActorId() {
          java.lang.Object ref = actorId_;
          if (!(ref instanceof java.lang.String)) {
            java.lang.String s = ((com.google.protobuf.ByteString) ref)
                .toStringUtf8();
            actorId_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string actor_id = 2;</code>
         */
        public com.google.protobuf.ByteString
            getActorIdBytes() {
          java.lang.Object ref = actorId_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            actorId_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string actor_id = 2;</code>
         */
        public Builder setActorId(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          actorId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string actor_id = 2;</code>
         */
        public Builder clearActorId() {
          bitField0_ = (bitField0_ & ~0x00000002);
          actorId_ = getDefaultInstance().getActorId();
          onChanged();
          return this;
        }
        /**
         * <code>optional string actor_id = 2;</code>
         */
        public Builder setActorIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          actorId_ = value;
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance)
      }

      static {
        defaultInstance = new SwimlaneContextInstance(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance)
    }

    public interface NodeInstanceOrBuilder
        extends com.google.protobuf.MessageOrBuilder {

      // optional int64 id = 1;
      /**
       * <code>optional int64 id = 1;</code>
       */
      boolean hasId();
      /**
       * <code>optional int64 id = 1;</code>
       */
      long getId();

      // optional int64 node_id = 2;
      /**
       * <code>optional int64 node_id = 2;</code>
       */
      boolean hasNodeId();
      /**
       * <code>optional int64 node_id = 2;</code>
       */
      long getNodeId();

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
       */
      boolean hasContent();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent getContent();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContentOrBuilder getContentOrBuilder();

      // optional int32 level = 5;
      /**
       * <code>optional int32 level = 5;</code>
       */
      boolean hasLevel();
      /**
       * <code>optional int32 level = 5;</code>
       */
      int getLevel();
    }
    /**
     * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstance}
     */
    public static final class NodeInstance extends
        com.google.protobuf.GeneratedMessage
        implements NodeInstanceOrBuilder {
      // Use NodeInstance.newBuilder() to construct.
      private NodeInstance(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private NodeInstance(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

      private static final NodeInstance defaultInstance;
      public static NodeInstance getDefaultInstance() {
        return defaultInstance;
      }

      public NodeInstance getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private NodeInstance(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          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;
                id_ = input.readInt64();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                nodeId_ = input.readInt64();
                break;
              }
              case 34: {
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.Builder subBuilder = null;
                if (((bitField0_ & 0x00000004) == 0x00000004)) {
                  subBuilder = content_.toBuilder();
                }
                content_ = input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(content_);
                  content_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000004;
                break;
              }
              case 40: {
                bitField0_ |= 0x00000008;
                level_ = 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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstance_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstance_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder.class);
      }

      public static com.google.protobuf.Parser<NodeInstance> PARSER =
          new com.google.protobuf.AbstractParser<NodeInstance>() {
        public NodeInstance parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new NodeInstance(input, extensionRegistry);
        }
      };

      @java.lang.Override
      public com.google.protobuf.Parser<NodeInstance> getParserForType() {
        return PARSER;
      }

      private int bitField0_;
      // optional int64 id = 1;
      public static final int ID_FIELD_NUMBER = 1;
      private long id_;
      /**
       * <code>optional int64 id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int64 id = 1;</code>
       */
      public long getId() {
        return id_;
      }

      // optional int64 node_id = 2;
      public static final int NODE_ID_FIELD_NUMBER = 2;
      private long nodeId_;
      /**
       * <code>optional int64 node_id = 2;</code>
       */
      public boolean hasNodeId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int64 node_id = 2;</code>
       */
      public long getNodeId() {
        return nodeId_;
      }

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;
      public static final int CONTENT_FIELD_NUMBER = 4;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent content_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
       */
      public boolean hasContent() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent getContent() {
        return content_;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContentOrBuilder getContentOrBuilder() {
        return content_;
      }

      // optional int32 level = 5;
      public static final int LEVEL_FIELD_NUMBER = 5;
      private int level_;
      /**
       * <code>optional int32 level = 5;</code>
       */
      public boolean hasLevel() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int32 level = 5;</code>
       */
      public int getLevel() {
        return level_;
      }

      private void initFields() {
        id_ = 0L;
        nodeId_ = 0L;
        content_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.getDefaultInstance();
        level_ = 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.writeInt64(1, id_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt64(2, nodeId_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(4, content_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeInt32(5, level_);
        }
        getUnknownFields().writeTo(output);
      }

      private int 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, id_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(2, nodeId_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, content_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(5, level_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstance}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstance_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstance_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder.class);
        }

        // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getContentFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          id_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000001);
          nodeId_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000002);
          if (contentBuilder_ == null) {
            content_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.getDefaultInstance();
          } else {
            contentBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          level_ = 0;
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstance_descriptor;
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance getDefaultInstanceForType() {
          return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.getDefaultInstance();
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance build() {
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance buildPartial() {
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance(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.nodeId_ = nodeId_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          if (contentBuilder_ == null) {
            result.content_ = content_;
          } else {
            result.content_ = contentBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.level_ = level_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance) {
            return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance other) {
          if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.getDefaultInstance()) return this;
          if (other.hasId()) {
            setId(other.getId());
          }
          if (other.hasNodeId()) {
            setNodeId(other.getNodeId());
          }
          if (other.hasContent()) {
            mergeContent(other.getContent());
          }
          if (other.hasLevel()) {
            setLevel(other.getLevel());
          }
          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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // optional int64 id = 1;
        private long id_ ;
        /**
         * <code>optional int64 id = 1;</code>
         */
        public boolean hasId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional int64 id = 1;</code>
         */
        public long getId() {
          return id_;
        }
        /**
         * <code>optional int64 id = 1;</code>
         */
        public Builder setId(long value) {
          bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 id = 1;</code>
         */
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = 0L;
          onChanged();
          return this;
        }

        // optional int64 node_id = 2;
        private long nodeId_ ;
        /**
         * <code>optional int64 node_id = 2;</code>
         */
        public boolean hasNodeId() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional int64 node_id = 2;</code>
         */
        public long getNodeId() {
          return nodeId_;
        }
        /**
         * <code>optional int64 node_id = 2;</code>
         */
        public Builder setNodeId(long value) {
          bitField0_ |= 0x00000002;
          nodeId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 node_id = 2;</code>
         */
        public Builder clearNodeId() {
          bitField0_ = (bitField0_ & ~0x00000002);
          nodeId_ = 0L;
          onChanged();
          return this;
        }

        // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;
        private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent content_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContentOrBuilder> contentBuilder_;
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
         */
        public boolean hasContent() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent getContent() {
          if (contentBuilder_ == null) {
            return content_;
          } else {
            return contentBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
         */
        public Builder setContent(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent value) {
          if (contentBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            content_ = value;
            onChanged();
          } else {
            contentBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
         */
        public Builder setContent(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.Builder builderForValue) {
          if (contentBuilder_ == null) {
            content_ = builderForValue.build();
            onChanged();
          } else {
            contentBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
         */
        public Builder mergeContent(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent value) {
          if (contentBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004) &&
                content_ != org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.getDefaultInstance()) {
              content_ =
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.newBuilder(content_).mergeFrom(value).buildPartial();
            } else {
              content_ = value;
            }
            onChanged();
          } else {
            contentBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
         */
        public Builder clearContent() {
          if (contentBuilder_ == null) {
            content_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.getDefaultInstance();
            onChanged();
          } else {
            contentBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.Builder getContentBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getContentFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContentOrBuilder getContentOrBuilder() {
          if (contentBuilder_ != null) {
            return contentBuilder_.getMessageOrBuilder();
          } else {
            return content_;
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent content = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContentOrBuilder> 
            getContentFieldBuilder() {
          if (contentBuilder_ == null) {
            contentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContentOrBuilder>(
                    content_,
                    getParentForChildren(),
                    isClean());
            content_ = null;
          }
          return contentBuilder_;
        }

        // optional int32 level = 5;
        private int level_ ;
        /**
         * <code>optional int32 level = 5;</code>
         */
        public boolean hasLevel() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional int32 level = 5;</code>
         */
        public int getLevel() {
          return level_;
        }
        /**
         * <code>optional int32 level = 5;</code>
         */
        public Builder setLevel(int value) {
          bitField0_ |= 0x00000008;
          level_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int32 level = 5;</code>
         */
        public Builder clearLevel() {
          bitField0_ = (bitField0_ & ~0x00000008);
          level_ = 0;
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstance)
      }

      static {
        defaultInstance = new NodeInstance(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstance)
    }

    public interface ExclusiveGroupInstanceOrBuilder
        extends com.google.protobuf.MessageOrBuilder {

      // repeated int64 group_node_instance_id = 1;
      /**
       * <code>repeated int64 group_node_instance_id = 1;</code>
       */
      java.util.List<java.lang.Long> getGroupNodeInstanceIdList();
      /**
       * <code>repeated int64 group_node_instance_id = 1;</code>
       */
      int getGroupNodeInstanceIdCount();
      /**
       * <code>repeated int64 group_node_instance_id = 1;</code>
       */
      long getGroupNodeInstanceId(int index);
    }
    /**
     * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance}
     */
    public static final class ExclusiveGroupInstance extends
        com.google.protobuf.GeneratedMessage
        implements ExclusiveGroupInstanceOrBuilder {
      // Use ExclusiveGroupInstance.newBuilder() to construct.
      private ExclusiveGroupInstance(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private ExclusiveGroupInstance(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

      private static final ExclusiveGroupInstance defaultInstance;
      public static ExclusiveGroupInstance getDefaultInstance() {
        return defaultInstance;
      }

      public ExclusiveGroupInstance getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private ExclusiveGroupInstance(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          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: {
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                  groupNodeInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                  mutable_bitField0_ |= 0x00000001;
                }
                groupNodeInstanceId_.add(input.readInt64());
                break;
              }
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                  groupNodeInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                  mutable_bitField0_ |= 0x00000001;
                }
                while (input.getBytesUntilLimit() > 0) {
                  groupNodeInstanceId_.add(input.readInt64());
                }
                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_ & 0x00000001) == 0x00000001)) {
            groupNodeInstanceId_ = java.util.Collections.unmodifiableList(groupNodeInstanceId_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_ExclusiveGroupInstance_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_ExclusiveGroupInstance_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder.class);
      }

      public static com.google.protobuf.Parser<ExclusiveGroupInstance> PARSER =
          new com.google.protobuf.AbstractParser<ExclusiveGroupInstance>() {
        public ExclusiveGroupInstance parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new ExclusiveGroupInstance(input, extensionRegistry);
        }
      };

      @java.lang.Override
      public com.google.protobuf.Parser<ExclusiveGroupInstance> getParserForType() {
        return PARSER;
      }

      // repeated int64 group_node_instance_id = 1;
      public static final int GROUP_NODE_INSTANCE_ID_FIELD_NUMBER = 1;
      private java.util.List<java.lang.Long> groupNodeInstanceId_;
      /**
       * <code>repeated int64 group_node_instance_id = 1;</code>
       */
      public java.util.List<java.lang.Long>
          getGroupNodeInstanceIdList() {
        return groupNodeInstanceId_;
      }
      /**
       * <code>repeated int64 group_node_instance_id = 1;</code>
       */
      public int getGroupNodeInstanceIdCount() {
        return groupNodeInstanceId_.size();
      }
      /**
       * <code>repeated int64 group_node_instance_id = 1;</code>
       */
      public long getGroupNodeInstanceId(int index) {
        return groupNodeInstanceId_.get(index);
      }

      private void initFields() {
        groupNodeInstanceId_ = 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 < groupNodeInstanceId_.size(); i++) {
          output.writeInt64(1, groupNodeInstanceId_.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 < groupNodeInstanceId_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt64SizeNoTag(groupNodeInstanceId_.get(i));
          }
          size += dataSize;
          size += 1 * getGroupNodeInstanceIdList().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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_ExclusiveGroupInstance_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_ExclusiveGroupInstance_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder.class);
        }

        // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.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();
          groupNodeInstanceId_ = 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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_ExclusiveGroupInstance_descriptor;
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance getDefaultInstanceForType() {
          return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.getDefaultInstance();
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance build() {
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance buildPartial() {
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance(this);
          int from_bitField0_ = bitField0_;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            groupNodeInstanceId_ = java.util.Collections.unmodifiableList(groupNodeInstanceId_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.groupNodeInstanceId_ = groupNodeInstanceId_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance) {
            return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance other) {
          if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.getDefaultInstance()) return this;
          if (!other.groupNodeInstanceId_.isEmpty()) {
            if (groupNodeInstanceId_.isEmpty()) {
              groupNodeInstanceId_ = other.groupNodeInstanceId_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureGroupNodeInstanceIdIsMutable();
              groupNodeInstanceId_.addAll(other.groupNodeInstanceId_);
            }
            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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // repeated int64 group_node_instance_id = 1;
        private java.util.List<java.lang.Long> groupNodeInstanceId_ = java.util.Collections.emptyList();
        private void ensureGroupNodeInstanceIdIsMutable() {
          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
            groupNodeInstanceId_ = new java.util.ArrayList<java.lang.Long>(groupNodeInstanceId_);
            bitField0_ |= 0x00000001;
           }
        }
        /**
         * <code>repeated int64 group_node_instance_id = 1;</code>
         */
        public java.util.List<java.lang.Long>
            getGroupNodeInstanceIdList() {
          return java.util.Collections.unmodifiableList(groupNodeInstanceId_);
        }
        /**
         * <code>repeated int64 group_node_instance_id = 1;</code>
         */
        public int getGroupNodeInstanceIdCount() {
          return groupNodeInstanceId_.size();
        }
        /**
         * <code>repeated int64 group_node_instance_id = 1;</code>
         */
        public long getGroupNodeInstanceId(int index) {
          return groupNodeInstanceId_.get(index);
        }
        /**
         * <code>repeated int64 group_node_instance_id = 1;</code>
         */
        public Builder setGroupNodeInstanceId(
            int index, long value) {
          ensureGroupNodeInstanceIdIsMutable();
          groupNodeInstanceId_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int64 group_node_instance_id = 1;</code>
         */
        public Builder addGroupNodeInstanceId(long value) {
          ensureGroupNodeInstanceIdIsMutable();
          groupNodeInstanceId_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int64 group_node_instance_id = 1;</code>
         */
        public Builder addAllGroupNodeInstanceId(
            java.lang.Iterable<? extends java.lang.Long> values) {
          ensureGroupNodeInstanceIdIsMutable();
          super.addAll(values, groupNodeInstanceId_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int64 group_node_instance_id = 1;</code>
         */
        public Builder clearGroupNodeInstanceId() {
          groupNodeInstanceId_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance)
      }

      static {
        defaultInstance = new ExclusiveGroupInstance(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance)
    }

    public interface NodeInstanceContentOrBuilder
        extends com.google.protobuf.MessageOrBuilder {

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceType type = 1;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceType type = 1;</code>
       */
      boolean hasType();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceType type = 1;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceType getType();

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
       */
      boolean hasRuleSet();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode getRuleSet();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNodeOrBuilder getRuleSetOrBuilder();

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
       */
      boolean hasHumanTask();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode getHumanTask();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNodeOrBuilder getHumanTaskOrBuilder();

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
       */
      boolean hasWorkItem();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode getWorkItem();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNodeOrBuilder getWorkItemOrBuilder();

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
       */
      boolean hasSubProcess();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode getSubProcess();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNodeOrBuilder getSubProcessOrBuilder();

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
       */
      boolean hasMilestone();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode getMilestone();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNodeOrBuilder getMilestoneOrBuilder();

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
       */
      boolean hasEvent();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode getEvent();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNodeOrBuilder getEventOrBuilder();

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
       */
      boolean hasTimer();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode getTimer();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNodeOrBuilder getTimerOrBuilder();

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
       */
      boolean hasJoin();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode getJoin();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNodeOrBuilder getJoinOrBuilder();

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
       */
      boolean hasState();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode getState();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNodeOrBuilder getStateOrBuilder();

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
       */
      boolean hasComposite();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode getComposite();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNodeOrBuilder getCompositeOrBuilder();

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
       */
      boolean hasForEach();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode getForEach();
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
       */
      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNodeOrBuilder getForEachOrBuilder();
    }
    /**
     * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent}
     */
    public static final class NodeInstanceContent extends
        com.google.protobuf.GeneratedMessage
        implements NodeInstanceContentOrBuilder {
      // Use NodeInstanceContent.newBuilder() to construct.
      private NodeInstanceContent(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private NodeInstanceContent(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

      private static final NodeInstanceContent defaultInstance;
      public static NodeInstanceContent getDefaultInstance() {
        return defaultInstance;
      }

      public NodeInstanceContent getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private NodeInstanceContent(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceType value = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceType.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  type_ = value;
                }
                break;
              }
              case 18: {
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = ruleSet_.toBuilder();
                }
                ruleSet_ = input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(ruleSet_);
                  ruleSet_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                break;
              }
              case 26: {
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.Builder subBuilder = null;
                if (((bitField0_ & 0x00000004) == 0x00000004)) {
                  subBuilder = humanTask_.toBuilder();
                }
                humanTask_ = input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(humanTask_);
                  humanTask_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000004;
                break;
              }
              case 34: {
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.Builder subBuilder = null;
                if (((bitField0_ & 0x00000008) == 0x00000008)) {
                  subBuilder = workItem_.toBuilder();
                }
                workItem_ = input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(workItem_);
                  workItem_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000008;
                break;
              }
              case 42: {
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.Builder subBuilder = null;
                if (((bitField0_ & 0x00000010) == 0x00000010)) {
                  subBuilder = subProcess_.toBuilder();
                }
                subProcess_ = input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(subProcess_);
                  subProcess_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000010;
                break;
              }
              case 50: {
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.Builder subBuilder = null;
                if (((bitField0_ & 0x00000020) == 0x00000020)) {
                  subBuilder = milestone_.toBuilder();
                }
                milestone_ = input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(milestone_);
                  milestone_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000020;
                break;
              }
              case 58: {
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.Builder subBuilder = null;
                if (((bitField0_ & 0x00000040) == 0x00000040)) {
                  subBuilder = event_.toBuilder();
                }
                event_ = input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(event_);
                  event_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000040;
                break;
              }
              case 66: {
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.Builder subBuilder = null;
                if (((bitField0_ & 0x00000080) == 0x00000080)) {
                  subBuilder = timer_.toBuilder();
                }
                timer_ = input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(timer_);
                  timer_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000080;
                break;
              }
              case 74: {
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.Builder subBuilder = null;
                if (((bitField0_ & 0x00000100) == 0x00000100)) {
                  subBuilder = join_.toBuilder();
                }
                join_ = input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(join_);
                  join_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000100;
                break;
              }
              case 82: {
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.Builder subBuilder = null;
                if (((bitField0_ & 0x00000200) == 0x00000200)) {
                  subBuilder = state_.toBuilder();
                }
                state_ = input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(state_);
                  state_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000200;
                break;
              }
              case 90: {
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.Builder subBuilder = null;
                if (((bitField0_ & 0x00000400) == 0x00000400)) {
                  subBuilder = composite_.toBuilder();
                }
                composite_ = input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(composite_);
                  composite_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000400;
                break;
              }
              case 98: {
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.Builder subBuilder = null;
                if (((bitField0_ & 0x00000800) == 0x00000800)) {
                  subBuilder = forEach_.toBuilder();
                }
                forEach_ = input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(forEach_);
                  forEach_ = 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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.Builder.class);
      }

      public static com.google.protobuf.Parser<NodeInstanceContent> PARSER =
          new com.google.protobuf.AbstractParser<NodeInstanceContent>() {
        public NodeInstanceContent parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new NodeInstanceContent(input, extensionRegistry);
        }
      };

      @java.lang.Override
      public com.google.protobuf.Parser<NodeInstanceContent> getParserForType() {
        return PARSER;
      }

      public interface RuleSetNodeOrBuilder
          extends com.google.protobuf.MessageOrBuilder {

        // repeated int64 timer_instance_id = 1;
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        java.util.List<java.lang.Long> getTimerInstanceIdList();
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        int getTimerInstanceIdCount();
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        long getTimerInstanceId(int index);

        // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
         */
        java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry> 
            getMapEntryList();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry getMapEntry(int index);
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
         */
        int getMapEntryCount();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
         */
        java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntryOrBuilder> 
            getMapEntryOrBuilderList();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntryOrBuilder getMapEntryOrBuilder(
            int index);

        // optional string rule_flow_group = 3;
        /**
         * <code>optional string rule_flow_group = 3;</code>
         */
        boolean hasRuleFlowGroup();
        /**
         * <code>optional string rule_flow_group = 3;</code>
         */
        java.lang.String getRuleFlowGroup();
        /**
         * <code>optional string rule_flow_group = 3;</code>
         */
        com.google.protobuf.ByteString
            getRuleFlowGroupBytes();
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode}
       */
      public static final class RuleSetNode extends
          com.google.protobuf.GeneratedMessage
          implements RuleSetNodeOrBuilder {
        // Use RuleSetNode.newBuilder() to construct.
        private RuleSetNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private RuleSetNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final RuleSetNode defaultInstance;
        public static RuleSetNode getDefaultInstance() {
          return defaultInstance;
        }

        public RuleSetNode getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private RuleSetNode(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            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: {
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  timerInstanceId_.add(input.readInt64());
                  break;
                }
                case 10: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    timerInstanceId_.add(input.readInt64());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 18: {
                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                    mapEntry_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry>();
                    mutable_bitField0_ |= 0x00000002;
                  }
                  mapEntry_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.PARSER, extensionRegistry));
                  break;
                }
                case 26: {
                  bitField0_ |= 0x00000001;
                  ruleFlowGroup_ = 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)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
            }
            if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
              mapEntry_ = java.util.Collections.unmodifiableList(mapEntry_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.Builder.class);
        }

        public static com.google.protobuf.Parser<RuleSetNode> PARSER =
            new com.google.protobuf.AbstractParser<RuleSetNode>() {
          public RuleSetNode parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new RuleSetNode(input, extensionRegistry);
          }
        };

        @java.lang.Override
        public com.google.protobuf.Parser<RuleSetNode> getParserForType() {
          return PARSER;
        }

        public interface TextMapEntryOrBuilder
            extends com.google.protobuf.MessageOrBuilder {

          // optional string name = 1;
          /**
           * <code>optional string name = 1;</code>
           */
          boolean hasName();
          /**
           * <code>optional string name = 1;</code>
           */
          java.lang.String getName();
          /**
           * <code>optional 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 org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry}
         */
        public static final class TextMapEntry extends
            com.google.protobuf.GeneratedMessage
            implements TextMapEntryOrBuilder {
          // Use TextMapEntry.newBuilder() to construct.
          private TextMapEntry(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
            super(builder);
            this.unknownFields = builder.getUnknownFields();
          }
          private TextMapEntry(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

          private static final TextMapEntry defaultInstance;
          public static TextMapEntry getDefaultInstance() {
            return defaultInstance;
          }

          public TextMapEntry getDefaultInstanceForType() {
            return defaultInstance;
          }

          private final com.google.protobuf.UnknownFieldSet unknownFields;
          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
              getUnknownFields() {
            return this.unknownFields;
          }
          private TextMapEntry(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            initFields();
            int mutable_bitField0_ = 0;
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_TextMapEntry_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_TextMapEntry_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.Builder.class);
          }

          public static com.google.protobuf.Parser<TextMapEntry> PARSER =
              new com.google.protobuf.AbstractParser<TextMapEntry>() {
            public TextMapEntry parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new TextMapEntry(input, extensionRegistry);
            }
          };

          @java.lang.Override
          public com.google.protobuf.Parser<TextMapEntry> getParserForType() {
            return PARSER;
          }

          private int bitField0_;
          // optional string name = 1;
          public static final int NAME_FIELD_NUMBER = 1;
          private java.lang.Object name_;
          /**
           * <code>optional string name = 1;</code>
           */
          public boolean hasName() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * <code>optional 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>optional 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;

            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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseFrom(input, extensionRegistry);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input, extensionRegistry);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseFrom(input, extensionRegistry);
          }

          public static Builder newBuilder() { return Builder.create(); }
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry prototype) {
            return newBuilder().mergeFrom(prototype);
          }
          public Builder toBuilder() { return newBuilder(this); }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessage.Builder<Builder>
             implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntryOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_TextMapEntry_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_TextMapEntry_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.Builder.class);
            }

            // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_TextMapEntry_descriptor;
            }

            public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry getDefaultInstanceForType() {
              return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.getDefaultInstance();
            }

            public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry build() {
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry buildPartial() {
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry(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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry) {
                return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry other) {
              if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.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() {
              return true;
            }

            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry) e.getUnfinishedMessage();
                throw e;
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            private int bitField0_;

            // optional string name = 1;
            private java.lang.Object name_ = "";
            /**
             * <code>optional string name = 1;</code>
             */
            public boolean hasName() {
              return ((bitField0_ & 0x00000001) == 0x00000001);
            }
            /**
             * <code>optional 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>optional 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>optional 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>optional string name = 1;</code>
             */
            public Builder clearName() {
              bitField0_ = (bitField0_ & ~0x00000001);
              name_ = getDefaultInstance().getName();
              onChanged();
              return this;
            }
            /**
             * <code>optional 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:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry)
          }

          static {
            defaultInstance = new TextMapEntry(true);
            defaultInstance.initFields();
          }

          // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry)
        }

        private int bitField0_;
        // repeated int64 timer_instance_id = 1;
        public static final int TIMER_INSTANCE_ID_FIELD_NUMBER = 1;
        private java.util.List<java.lang.Long> timerInstanceId_;
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        public java.util.List<java.lang.Long>
            getTimerInstanceIdList() {
          return timerInstanceId_;
        }
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        public int getTimerInstanceIdCount() {
          return timerInstanceId_.size();
        }
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        public long getTimerInstanceId(int index) {
          return timerInstanceId_.get(index);
        }

        // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;
        public static final int MAPENTRY_FIELD_NUMBER = 2;
        private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry> mapEntry_;
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
         */
        public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry> getMapEntryList() {
          return mapEntry_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
         */
        public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntryOrBuilder> 
            getMapEntryOrBuilderList() {
          return mapEntry_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
         */
        public int getMapEntryCount() {
          return mapEntry_.size();
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry getMapEntry(int index) {
          return mapEntry_.get(index);
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntryOrBuilder getMapEntryOrBuilder(
            int index) {
          return mapEntry_.get(index);
        }

        // optional string rule_flow_group = 3;
        public static final int RULE_FLOW_GROUP_FIELD_NUMBER = 3;
        private java.lang.Object ruleFlowGroup_;
        /**
         * <code>optional string rule_flow_group = 3;</code>
         */
        public boolean hasRuleFlowGroup() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional string rule_flow_group = 3;</code>
         */
        public java.lang.String getRuleFlowGroup() {
          java.lang.Object ref = ruleFlowGroup_;
          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()) {
              ruleFlowGroup_ = s;
            }
            return s;
          }
        }
        /**
         * <code>optional string rule_flow_group = 3;</code>
         */
        public com.google.protobuf.ByteString
            getRuleFlowGroupBytes() {
          java.lang.Object ref = ruleFlowGroup_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            ruleFlowGroup_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        private void initFields() {
          timerInstanceId_ = java.util.Collections.emptyList();
          mapEntry_ = java.util.Collections.emptyList();
          ruleFlowGroup_ = "";
        }
        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 < timerInstanceId_.size(); i++) {
            output.writeInt64(1, timerInstanceId_.get(i));
          }
          for (int i = 0; i < mapEntry_.size(); i++) {
            output.writeMessage(2, mapEntry_.get(i));
          }
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeBytes(3, getRuleFlowGroupBytes());
          }
          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 < timerInstanceId_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeInt64SizeNoTag(timerInstanceId_.get(i));
            }
            size += dataSize;
            size += 1 * getTimerInstanceIdList().size();
          }
          for (int i = 0; i < mapEntry_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(2, mapEntry_.get(i));
          }
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBytesSize(3, getRuleFlowGroupBytes());
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder<Builder>
           implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNodeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.Builder.class);
          }

          // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
              getMapEntryFieldBuilder();
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            timerInstanceId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            if (mapEntryBuilder_ == null) {
              mapEntry_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              mapEntryBuilder_.clear();
            }
            ruleFlowGroup_ = "";
            bitField0_ = (bitField0_ & ~0x00000004);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_descriptor;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode getDefaultInstanceForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.getDefaultInstance();
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode build() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode buildPartial() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.timerInstanceId_ = timerInstanceId_;
            if (mapEntryBuilder_ == null) {
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                mapEntry_ = java.util.Collections.unmodifiableList(mapEntry_);
                bitField0_ = (bitField0_ & ~0x00000002);
              }
              result.mapEntry_ = mapEntry_;
            } else {
              result.mapEntry_ = mapEntryBuilder_.build();
            }
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000001;
            }
            result.ruleFlowGroup_ = ruleFlowGroup_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode) {
              return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode other) {
            if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.getDefaultInstance()) return this;
            if (!other.timerInstanceId_.isEmpty()) {
              if (timerInstanceId_.isEmpty()) {
                timerInstanceId_ = other.timerInstanceId_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureTimerInstanceIdIsMutable();
                timerInstanceId_.addAll(other.timerInstanceId_);
              }
              onChanged();
            }
            if (mapEntryBuilder_ == null) {
              if (!other.mapEntry_.isEmpty()) {
                if (mapEntry_.isEmpty()) {
                  mapEntry_ = other.mapEntry_;
                  bitField0_ = (bitField0_ & ~0x00000002);
                } else {
                  ensureMapEntryIsMutable();
                  mapEntry_.addAll(other.mapEntry_);
                }
                onChanged();
              }
            } else {
              if (!other.mapEntry_.isEmpty()) {
                if (mapEntryBuilder_.isEmpty()) {
                  mapEntryBuilder_.dispose();
                  mapEntryBuilder_ = null;
                  mapEntry_ = other.mapEntry_;
                  bitField0_ = (bitField0_ & ~0x00000002);
                  mapEntryBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getMapEntryFieldBuilder() : null;
                } else {
                  mapEntryBuilder_.addAllMessages(other.mapEntry_);
                }
              }
            }
            if (other.hasRuleFlowGroup()) {
              bitField0_ |= 0x00000004;
              ruleFlowGroup_ = other.ruleFlowGroup_;
              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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          // repeated int64 timer_instance_id = 1;
          private java.util.List<java.lang.Long> timerInstanceId_ = java.util.Collections.emptyList();
          private void ensureTimerInstanceIdIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              timerInstanceId_ = new java.util.ArrayList<java.lang.Long>(timerInstanceId_);
              bitField0_ |= 0x00000001;
             }
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public java.util.List<java.lang.Long>
              getTimerInstanceIdList() {
            return java.util.Collections.unmodifiableList(timerInstanceId_);
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public int getTimerInstanceIdCount() {
            return timerInstanceId_.size();
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public long getTimerInstanceId(int index) {
            return timerInstanceId_.get(index);
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public Builder setTimerInstanceId(
              int index, long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public Builder addTimerInstanceId(long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public Builder addAllTimerInstanceId(
              java.lang.Iterable<? extends java.lang.Long> values) {
            ensureTimerInstanceIdIsMutable();
            super.addAll(values, timerInstanceId_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public Builder clearTimerInstanceId() {
            timerInstanceId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }

          // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;
          private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry> mapEntry_ =
            java.util.Collections.emptyList();
          private void ensureMapEntryIsMutable() {
            if (!((bitField0_ & 0x00000002) == 0x00000002)) {
              mapEntry_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry>(mapEntry_);
              bitField0_ |= 0x00000002;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntryOrBuilder> mapEntryBuilder_;

          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry> getMapEntryList() {
            if (mapEntryBuilder_ == null) {
              return java.util.Collections.unmodifiableList(mapEntry_);
            } else {
              return mapEntryBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public int getMapEntryCount() {
            if (mapEntryBuilder_ == null) {
              return mapEntry_.size();
            } else {
              return mapEntryBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry getMapEntry(int index) {
            if (mapEntryBuilder_ == null) {
              return mapEntry_.get(index);
            } else {
              return mapEntryBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public Builder setMapEntry(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry value) {
            if (mapEntryBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureMapEntryIsMutable();
              mapEntry_.set(index, value);
              onChanged();
            } else {
              mapEntryBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public Builder setMapEntry(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.Builder builderForValue) {
            if (mapEntryBuilder_ == null) {
              ensureMapEntryIsMutable();
              mapEntry_.set(index, builderForValue.build());
              onChanged();
            } else {
              mapEntryBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public Builder addMapEntry(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry value) {
            if (mapEntryBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureMapEntryIsMutable();
              mapEntry_.add(value);
              onChanged();
            } else {
              mapEntryBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public Builder addMapEntry(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry value) {
            if (mapEntryBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureMapEntryIsMutable();
              mapEntry_.add(index, value);
              onChanged();
            } else {
              mapEntryBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public Builder addMapEntry(
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.Builder builderForValue) {
            if (mapEntryBuilder_ == null) {
              ensureMapEntryIsMutable();
              mapEntry_.add(builderForValue.build());
              onChanged();
            } else {
              mapEntryBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public Builder addMapEntry(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.Builder builderForValue) {
            if (mapEntryBuilder_ == null) {
              ensureMapEntryIsMutable();
              mapEntry_.add(index, builderForValue.build());
              onChanged();
            } else {
              mapEntryBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public Builder addAllMapEntry(
              java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry> values) {
            if (mapEntryBuilder_ == null) {
              ensureMapEntryIsMutable();
              super.addAll(values, mapEntry_);
              onChanged();
            } else {
              mapEntryBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public Builder clearMapEntry() {
            if (mapEntryBuilder_ == null) {
              mapEntry_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000002);
              onChanged();
            } else {
              mapEntryBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public Builder removeMapEntry(int index) {
            if (mapEntryBuilder_ == null) {
              ensureMapEntryIsMutable();
              mapEntry_.remove(index);
              onChanged();
            } else {
              mapEntryBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.Builder getMapEntryBuilder(
              int index) {
            return getMapEntryFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntryOrBuilder getMapEntryOrBuilder(
              int index) {
            if (mapEntryBuilder_ == null) {
              return mapEntry_.get(index);  } else {
              return mapEntryBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntryOrBuilder> 
               getMapEntryOrBuilderList() {
            if (mapEntryBuilder_ != null) {
              return mapEntryBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(mapEntry_);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.Builder addMapEntryBuilder() {
            return getMapEntryFieldBuilder().addBuilder(
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.Builder addMapEntryBuilder(
              int index) {
            return getMapEntryFieldBuilder().addBuilder(
                index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry mapEntry = 2;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.Builder> 
               getMapEntryBuilderList() {
            return getMapEntryFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntryOrBuilder> 
              getMapEntryFieldBuilder() {
            if (mapEntryBuilder_ == null) {
              mapEntryBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntry.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.TextMapEntryOrBuilder>(
                      mapEntry_,
                      ((bitField0_ & 0x00000002) == 0x00000002),
                      getParentForChildren(),
                      isClean());
              mapEntry_ = null;
            }
            return mapEntryBuilder_;
          }

          // optional string rule_flow_group = 3;
          private java.lang.Object ruleFlowGroup_ = "";
          /**
           * <code>optional string rule_flow_group = 3;</code>
           */
          public boolean hasRuleFlowGroup() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * <code>optional string rule_flow_group = 3;</code>
           */
          public java.lang.String getRuleFlowGroup() {
            java.lang.Object ref = ruleFlowGroup_;
            if (!(ref instanceof java.lang.String)) {
              java.lang.String s = ((com.google.protobuf.ByteString) ref)
                  .toStringUtf8();
              ruleFlowGroup_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <code>optional string rule_flow_group = 3;</code>
           */
          public com.google.protobuf.ByteString
              getRuleFlowGroupBytes() {
            java.lang.Object ref = ruleFlowGroup_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              ruleFlowGroup_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <code>optional string rule_flow_group = 3;</code>
           */
          public Builder setRuleFlowGroup(
              java.lang.String value) {
            if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
            ruleFlowGroup_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional string rule_flow_group = 3;</code>
           */
          public Builder clearRuleFlowGroup() {
            bitField0_ = (bitField0_ & ~0x00000004);
            ruleFlowGroup_ = getDefaultInstance().getRuleFlowGroup();
            onChanged();
            return this;
          }
          /**
           * <code>optional string rule_flow_group = 3;</code>
           */
          public Builder setRuleFlowGroupBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
            ruleFlowGroup_ = value;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode)
        }

        static {
          defaultInstance = new RuleSetNode(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode)
      }

      public interface HumanTaskNodeOrBuilder
          extends com.google.protobuf.MessageOrBuilder {

        // optional int64 work_item_id = 1;
        /**
         * <code>optional int64 work_item_id = 1;</code>
         */
        boolean hasWorkItemId();
        /**
         * <code>optional int64 work_item_id = 1;</code>
         */
        long getWorkItemId();

        // repeated int64 timer_instance_id = 2;
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        java.util.List<java.lang.Long> getTimerInstanceIdList();
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        int getTimerInstanceIdCount();
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        long getTimerInstanceId(int index);
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode}
       */
      public static final class HumanTaskNode extends
          com.google.protobuf.GeneratedMessage
          implements HumanTaskNodeOrBuilder {
        // Use HumanTaskNode.newBuilder() to construct.
        private HumanTaskNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private HumanTaskNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final HumanTaskNode defaultInstance;
        public static HumanTaskNode getDefaultInstance() {
          return defaultInstance;
        }

        public HumanTaskNode getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private HumanTaskNode(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            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;
                  workItemId_ = input.readInt64();
                  break;
                }
                case 16: {
                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000002;
                  }
                  timerInstanceId_.add(input.readInt64());
                  break;
                }
                case 18: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000002;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    timerInstanceId_.add(input.readInt64());
                  }
                  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_ & 0x00000002) == 0x00000002)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_HumanTaskNode_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_HumanTaskNode_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.Builder.class);
        }

        public static com.google.protobuf.Parser<HumanTaskNode> PARSER =
            new com.google.protobuf.AbstractParser<HumanTaskNode>() {
          public HumanTaskNode parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new HumanTaskNode(input, extensionRegistry);
          }
        };

        @java.lang.Override
        public com.google.protobuf.Parser<HumanTaskNode> getParserForType() {
          return PARSER;
        }

        private int bitField0_;
        // optional int64 work_item_id = 1;
        public static final int WORK_ITEM_ID_FIELD_NUMBER = 1;
        private long workItemId_;
        /**
         * <code>optional int64 work_item_id = 1;</code>
         */
        public boolean hasWorkItemId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional int64 work_item_id = 1;</code>
         */
        public long getWorkItemId() {
          return workItemId_;
        }

        // repeated int64 timer_instance_id = 2;
        public static final int TIMER_INSTANCE_ID_FIELD_NUMBER = 2;
        private java.util.List<java.lang.Long> timerInstanceId_;
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        public java.util.List<java.lang.Long>
            getTimerInstanceIdList() {
          return timerInstanceId_;
        }
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        public int getTimerInstanceIdCount() {
          return timerInstanceId_.size();
        }
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        public long getTimerInstanceId(int index) {
          return timerInstanceId_.get(index);
        }

        private void initFields() {
          workItemId_ = 0L;
          timerInstanceId_ = 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();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeInt64(1, workItemId_);
          }
          for (int i = 0; i < timerInstanceId_.size(); i++) {
            output.writeInt64(2, timerInstanceId_.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
              .computeInt64Size(1, workItemId_);
          }
          {
            int dataSize = 0;
            for (int i = 0; i < timerInstanceId_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeInt64SizeNoTag(timerInstanceId_.get(i));
            }
            size += dataSize;
            size += 1 * getTimerInstanceIdList().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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder<Builder>
           implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNodeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_HumanTaskNode_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_HumanTaskNode_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.Builder.class);
          }

          // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.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();
            workItemId_ = 0L;
            bitField0_ = (bitField0_ & ~0x00000001);
            timerInstanceId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_HumanTaskNode_descriptor;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode getDefaultInstanceForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.getDefaultInstance();
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode build() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode buildPartial() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.workItemId_ = workItemId_;
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.timerInstanceId_ = timerInstanceId_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode) {
              return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode other) {
            if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.getDefaultInstance()) return this;
            if (other.hasWorkItemId()) {
              setWorkItemId(other.getWorkItemId());
            }
            if (!other.timerInstanceId_.isEmpty()) {
              if (timerInstanceId_.isEmpty()) {
                timerInstanceId_ = other.timerInstanceId_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureTimerInstanceIdIsMutable();
                timerInstanceId_.addAll(other.timerInstanceId_);
              }
              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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          // optional int64 work_item_id = 1;
          private long workItemId_ ;
          /**
           * <code>optional int64 work_item_id = 1;</code>
           */
          public boolean hasWorkItemId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * <code>optional int64 work_item_id = 1;</code>
           */
          public long getWorkItemId() {
            return workItemId_;
          }
          /**
           * <code>optional int64 work_item_id = 1;</code>
           */
          public Builder setWorkItemId(long value) {
            bitField0_ |= 0x00000001;
            workItemId_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional int64 work_item_id = 1;</code>
           */
          public Builder clearWorkItemId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            workItemId_ = 0L;
            onChanged();
            return this;
          }

          // repeated int64 timer_instance_id = 2;
          private java.util.List<java.lang.Long> timerInstanceId_ = java.util.Collections.emptyList();
          private void ensureTimerInstanceIdIsMutable() {
            if (!((bitField0_ & 0x00000002) == 0x00000002)) {
              timerInstanceId_ = new java.util.ArrayList<java.lang.Long>(timerInstanceId_);
              bitField0_ |= 0x00000002;
             }
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public java.util.List<java.lang.Long>
              getTimerInstanceIdList() {
            return java.util.Collections.unmodifiableList(timerInstanceId_);
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public int getTimerInstanceIdCount() {
            return timerInstanceId_.size();
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public long getTimerInstanceId(int index) {
            return timerInstanceId_.get(index);
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder setTimerInstanceId(
              int index, long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder addTimerInstanceId(long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder addAllTimerInstanceId(
              java.lang.Iterable<? extends java.lang.Long> values) {
            ensureTimerInstanceIdIsMutable();
            super.addAll(values, timerInstanceId_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder clearTimerInstanceId() {
            timerInstanceId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode)
        }

        static {
          defaultInstance = new HumanTaskNode(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode)
      }

      public interface WorkItemNodeOrBuilder
          extends com.google.protobuf.MessageOrBuilder {

        // optional int64 work_item_id = 1;
        /**
         * <code>optional int64 work_item_id = 1;</code>
         */
        boolean hasWorkItemId();
        /**
         * <code>optional int64 work_item_id = 1;</code>
         */
        long getWorkItemId();

        // repeated int64 timer_instance_id = 2;
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        java.util.List<java.lang.Long> getTimerInstanceIdList();
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        int getTimerInstanceIdCount();
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        long getTimerInstanceId(int index);
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode}
       */
      public static final class WorkItemNode extends
          com.google.protobuf.GeneratedMessage
          implements WorkItemNodeOrBuilder {
        // Use WorkItemNode.newBuilder() to construct.
        private WorkItemNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private WorkItemNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final WorkItemNode defaultInstance;
        public static WorkItemNode getDefaultInstance() {
          return defaultInstance;
        }

        public WorkItemNode getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private WorkItemNode(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            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;
                  workItemId_ = input.readInt64();
                  break;
                }
                case 16: {
                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000002;
                  }
                  timerInstanceId_.add(input.readInt64());
                  break;
                }
                case 18: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000002;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    timerInstanceId_.add(input.readInt64());
                  }
                  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_ & 0x00000002) == 0x00000002)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_WorkItemNode_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_WorkItemNode_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.Builder.class);
        }

        public static com.google.protobuf.Parser<WorkItemNode> PARSER =
            new com.google.protobuf.AbstractParser<WorkItemNode>() {
          public WorkItemNode parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new WorkItemNode(input, extensionRegistry);
          }
        };

        @java.lang.Override
        public com.google.protobuf.Parser<WorkItemNode> getParserForType() {
          return PARSER;
        }

        private int bitField0_;
        // optional int64 work_item_id = 1;
        public static final int WORK_ITEM_ID_FIELD_NUMBER = 1;
        private long workItemId_;
        /**
         * <code>optional int64 work_item_id = 1;</code>
         */
        public boolean hasWorkItemId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional int64 work_item_id = 1;</code>
         */
        public long getWorkItemId() {
          return workItemId_;
        }

        // repeated int64 timer_instance_id = 2;
        public static final int TIMER_INSTANCE_ID_FIELD_NUMBER = 2;
        private java.util.List<java.lang.Long> timerInstanceId_;
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        public java.util.List<java.lang.Long>
            getTimerInstanceIdList() {
          return timerInstanceId_;
        }
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        public int getTimerInstanceIdCount() {
          return timerInstanceId_.size();
        }
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        public long getTimerInstanceId(int index) {
          return timerInstanceId_.get(index);
        }

        private void initFields() {
          workItemId_ = 0L;
          timerInstanceId_ = 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();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeInt64(1, workItemId_);
          }
          for (int i = 0; i < timerInstanceId_.size(); i++) {
            output.writeInt64(2, timerInstanceId_.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
              .computeInt64Size(1, workItemId_);
          }
          {
            int dataSize = 0;
            for (int i = 0; i < timerInstanceId_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeInt64SizeNoTag(timerInstanceId_.get(i));
            }
            size += dataSize;
            size += 1 * getTimerInstanceIdList().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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder<Builder>
           implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNodeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_WorkItemNode_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_WorkItemNode_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.Builder.class);
          }

          // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.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();
            workItemId_ = 0L;
            bitField0_ = (bitField0_ & ~0x00000001);
            timerInstanceId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_WorkItemNode_descriptor;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode getDefaultInstanceForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.getDefaultInstance();
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode build() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode buildPartial() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.workItemId_ = workItemId_;
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.timerInstanceId_ = timerInstanceId_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode) {
              return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode other) {
            if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.getDefaultInstance()) return this;
            if (other.hasWorkItemId()) {
              setWorkItemId(other.getWorkItemId());
            }
            if (!other.timerInstanceId_.isEmpty()) {
              if (timerInstanceId_.isEmpty()) {
                timerInstanceId_ = other.timerInstanceId_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureTimerInstanceIdIsMutable();
                timerInstanceId_.addAll(other.timerInstanceId_);
              }
              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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          // optional int64 work_item_id = 1;
          private long workItemId_ ;
          /**
           * <code>optional int64 work_item_id = 1;</code>
           */
          public boolean hasWorkItemId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * <code>optional int64 work_item_id = 1;</code>
           */
          public long getWorkItemId() {
            return workItemId_;
          }
          /**
           * <code>optional int64 work_item_id = 1;</code>
           */
          public Builder setWorkItemId(long value) {
            bitField0_ |= 0x00000001;
            workItemId_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional int64 work_item_id = 1;</code>
           */
          public Builder clearWorkItemId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            workItemId_ = 0L;
            onChanged();
            return this;
          }

          // repeated int64 timer_instance_id = 2;
          private java.util.List<java.lang.Long> timerInstanceId_ = java.util.Collections.emptyList();
          private void ensureTimerInstanceIdIsMutable() {
            if (!((bitField0_ & 0x00000002) == 0x00000002)) {
              timerInstanceId_ = new java.util.ArrayList<java.lang.Long>(timerInstanceId_);
              bitField0_ |= 0x00000002;
             }
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public java.util.List<java.lang.Long>
              getTimerInstanceIdList() {
            return java.util.Collections.unmodifiableList(timerInstanceId_);
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public int getTimerInstanceIdCount() {
            return timerInstanceId_.size();
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public long getTimerInstanceId(int index) {
            return timerInstanceId_.get(index);
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder setTimerInstanceId(
              int index, long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder addTimerInstanceId(long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder addAllTimerInstanceId(
              java.lang.Iterable<? extends java.lang.Long> values) {
            ensureTimerInstanceIdIsMutable();
            super.addAll(values, timerInstanceId_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder clearTimerInstanceId() {
            timerInstanceId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode)
        }

        static {
          defaultInstance = new WorkItemNode(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode)
      }

      public interface SubProcessNodeOrBuilder
          extends com.google.protobuf.MessageOrBuilder {

        // optional int64 process_instance_id = 1;
        /**
         * <code>optional int64 process_instance_id = 1;</code>
         */
        boolean hasProcessInstanceId();
        /**
         * <code>optional int64 process_instance_id = 1;</code>
         */
        long getProcessInstanceId();

        // repeated int64 timer_instance_id = 2;
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        java.util.List<java.lang.Long> getTimerInstanceIdList();
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        int getTimerInstanceIdCount();
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        long getTimerInstanceId(int index);
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode}
       */
      public static final class SubProcessNode extends
          com.google.protobuf.GeneratedMessage
          implements SubProcessNodeOrBuilder {
        // Use SubProcessNode.newBuilder() to construct.
        private SubProcessNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private SubProcessNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final SubProcessNode defaultInstance;
        public static SubProcessNode getDefaultInstance() {
          return defaultInstance;
        }

        public SubProcessNode getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private SubProcessNode(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            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;
                  processInstanceId_ = input.readInt64();
                  break;
                }
                case 16: {
                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000002;
                  }
                  timerInstanceId_.add(input.readInt64());
                  break;
                }
                case 18: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000002;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    timerInstanceId_.add(input.readInt64());
                  }
                  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_ & 0x00000002) == 0x00000002)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_SubProcessNode_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_SubProcessNode_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.Builder.class);
        }

        public static com.google.protobuf.Parser<SubProcessNode> PARSER =
            new com.google.protobuf.AbstractParser<SubProcessNode>() {
          public SubProcessNode parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new SubProcessNode(input, extensionRegistry);
          }
        };

        @java.lang.Override
        public com.google.protobuf.Parser<SubProcessNode> getParserForType() {
          return PARSER;
        }

        private int bitField0_;
        // optional int64 process_instance_id = 1;
        public static final int PROCESS_INSTANCE_ID_FIELD_NUMBER = 1;
        private long processInstanceId_;
        /**
         * <code>optional int64 process_instance_id = 1;</code>
         */
        public boolean hasProcessInstanceId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional int64 process_instance_id = 1;</code>
         */
        public long getProcessInstanceId() {
          return processInstanceId_;
        }

        // repeated int64 timer_instance_id = 2;
        public static final int TIMER_INSTANCE_ID_FIELD_NUMBER = 2;
        private java.util.List<java.lang.Long> timerInstanceId_;
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        public java.util.List<java.lang.Long>
            getTimerInstanceIdList() {
          return timerInstanceId_;
        }
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        public int getTimerInstanceIdCount() {
          return timerInstanceId_.size();
        }
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        public long getTimerInstanceId(int index) {
          return timerInstanceId_.get(index);
        }

        private void initFields() {
          processInstanceId_ = 0L;
          timerInstanceId_ = 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();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeInt64(1, processInstanceId_);
          }
          for (int i = 0; i < timerInstanceId_.size(); i++) {
            output.writeInt64(2, timerInstanceId_.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
              .computeInt64Size(1, processInstanceId_);
          }
          {
            int dataSize = 0;
            for (int i = 0; i < timerInstanceId_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeInt64SizeNoTag(timerInstanceId_.get(i));
            }
            size += dataSize;
            size += 1 * getTimerInstanceIdList().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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder<Builder>
           implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNodeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_SubProcessNode_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_SubProcessNode_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.Builder.class);
          }

          // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.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();
            processInstanceId_ = 0L;
            bitField0_ = (bitField0_ & ~0x00000001);
            timerInstanceId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_SubProcessNode_descriptor;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode getDefaultInstanceForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.getDefaultInstance();
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode build() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode buildPartial() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.processInstanceId_ = processInstanceId_;
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.timerInstanceId_ = timerInstanceId_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode) {
              return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode other) {
            if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.getDefaultInstance()) return this;
            if (other.hasProcessInstanceId()) {
              setProcessInstanceId(other.getProcessInstanceId());
            }
            if (!other.timerInstanceId_.isEmpty()) {
              if (timerInstanceId_.isEmpty()) {
                timerInstanceId_ = other.timerInstanceId_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureTimerInstanceIdIsMutable();
                timerInstanceId_.addAll(other.timerInstanceId_);
              }
              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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          // optional int64 process_instance_id = 1;
          private long processInstanceId_ ;
          /**
           * <code>optional int64 process_instance_id = 1;</code>
           */
          public boolean hasProcessInstanceId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * <code>optional int64 process_instance_id = 1;</code>
           */
          public long getProcessInstanceId() {
            return processInstanceId_;
          }
          /**
           * <code>optional int64 process_instance_id = 1;</code>
           */
          public Builder setProcessInstanceId(long value) {
            bitField0_ |= 0x00000001;
            processInstanceId_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional int64 process_instance_id = 1;</code>
           */
          public Builder clearProcessInstanceId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            processInstanceId_ = 0L;
            onChanged();
            return this;
          }

          // repeated int64 timer_instance_id = 2;
          private java.util.List<java.lang.Long> timerInstanceId_ = java.util.Collections.emptyList();
          private void ensureTimerInstanceIdIsMutable() {
            if (!((bitField0_ & 0x00000002) == 0x00000002)) {
              timerInstanceId_ = new java.util.ArrayList<java.lang.Long>(timerInstanceId_);
              bitField0_ |= 0x00000002;
             }
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public java.util.List<java.lang.Long>
              getTimerInstanceIdList() {
            return java.util.Collections.unmodifiableList(timerInstanceId_);
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public int getTimerInstanceIdCount() {
            return timerInstanceId_.size();
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public long getTimerInstanceId(int index) {
            return timerInstanceId_.get(index);
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder setTimerInstanceId(
              int index, long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder addTimerInstanceId(long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder addAllTimerInstanceId(
              java.lang.Iterable<? extends java.lang.Long> values) {
            ensureTimerInstanceIdIsMutable();
            super.addAll(values, timerInstanceId_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder clearTimerInstanceId() {
            timerInstanceId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode)
        }

        static {
          defaultInstance = new SubProcessNode(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode)
      }

      public interface MilestoneNodeOrBuilder
          extends com.google.protobuf.MessageOrBuilder {

        // repeated int64 timer_instance_id = 1;
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        java.util.List<java.lang.Long> getTimerInstanceIdList();
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        int getTimerInstanceIdCount();
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        long getTimerInstanceId(int index);
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode}
       */
      public static final class MilestoneNode extends
          com.google.protobuf.GeneratedMessage
          implements MilestoneNodeOrBuilder {
        // Use MilestoneNode.newBuilder() to construct.
        private MilestoneNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private MilestoneNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final MilestoneNode defaultInstance;
        public static MilestoneNode getDefaultInstance() {
          return defaultInstance;
        }

        public MilestoneNode getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private MilestoneNode(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            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: {
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  timerInstanceId_.add(input.readInt64());
                  break;
                }
                case 10: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    timerInstanceId_.add(input.readInt64());
                  }
                  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_ & 0x00000001) == 0x00000001)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_MilestoneNode_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_MilestoneNode_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.Builder.class);
        }

        public static com.google.protobuf.Parser<MilestoneNode> PARSER =
            new com.google.protobuf.AbstractParser<MilestoneNode>() {
          public MilestoneNode parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new MilestoneNode(input, extensionRegistry);
          }
        };

        @java.lang.Override
        public com.google.protobuf.Parser<MilestoneNode> getParserForType() {
          return PARSER;
        }

        // repeated int64 timer_instance_id = 1;
        public static final int TIMER_INSTANCE_ID_FIELD_NUMBER = 1;
        private java.util.List<java.lang.Long> timerInstanceId_;
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        public java.util.List<java.lang.Long>
            getTimerInstanceIdList() {
          return timerInstanceId_;
        }
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        public int getTimerInstanceIdCount() {
          return timerInstanceId_.size();
        }
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        public long getTimerInstanceId(int index) {
          return timerInstanceId_.get(index);
        }

        private void initFields() {
          timerInstanceId_ = 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 < timerInstanceId_.size(); i++) {
            output.writeInt64(1, timerInstanceId_.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 < timerInstanceId_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeInt64SizeNoTag(timerInstanceId_.get(i));
            }
            size += dataSize;
            size += 1 * getTimerInstanceIdList().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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder<Builder>
           implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNodeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_MilestoneNode_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_MilestoneNode_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.Builder.class);
          }

          // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.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();
            timerInstanceId_ = 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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_MilestoneNode_descriptor;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode getDefaultInstanceForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.getDefaultInstance();
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode build() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode buildPartial() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode(this);
            int from_bitField0_ = bitField0_;
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.timerInstanceId_ = timerInstanceId_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode) {
              return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode other) {
            if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.getDefaultInstance()) return this;
            if (!other.timerInstanceId_.isEmpty()) {
              if (timerInstanceId_.isEmpty()) {
                timerInstanceId_ = other.timerInstanceId_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureTimerInstanceIdIsMutable();
                timerInstanceId_.addAll(other.timerInstanceId_);
              }
              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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          // repeated int64 timer_instance_id = 1;
          private java.util.List<java.lang.Long> timerInstanceId_ = java.util.Collections.emptyList();
          private void ensureTimerInstanceIdIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              timerInstanceId_ = new java.util.ArrayList<java.lang.Long>(timerInstanceId_);
              bitField0_ |= 0x00000001;
             }
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public java.util.List<java.lang.Long>
              getTimerInstanceIdList() {
            return java.util.Collections.unmodifiableList(timerInstanceId_);
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public int getTimerInstanceIdCount() {
            return timerInstanceId_.size();
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public long getTimerInstanceId(int index) {
            return timerInstanceId_.get(index);
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public Builder setTimerInstanceId(
              int index, long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public Builder addTimerInstanceId(long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public Builder addAllTimerInstanceId(
              java.lang.Iterable<? extends java.lang.Long> values) {
            ensureTimerInstanceIdIsMutable();
            super.addAll(values, timerInstanceId_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public Builder clearTimerInstanceId() {
            timerInstanceId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode)
        }

        static {
          defaultInstance = new MilestoneNode(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode)
      }

      public interface EventNodeOrBuilder
          extends com.google.protobuf.MessageOrBuilder {
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode}
       */
      public static final class EventNode extends
          com.google.protobuf.GeneratedMessage
          implements EventNodeOrBuilder {
        // Use EventNode.newBuilder() to construct.
        private EventNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private EventNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final EventNode defaultInstance;
        public static EventNode getDefaultInstance() {
          return defaultInstance;
        }

        public EventNode getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private EventNode(
            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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_EventNode_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_EventNode_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.Builder.class);
        }

        public static com.google.protobuf.Parser<EventNode> PARSER =
            new com.google.protobuf.AbstractParser<EventNode>() {
          public EventNode parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new EventNode(input, extensionRegistry);
          }
        };

        @java.lang.Override
        public com.google.protobuf.Parser<EventNode> 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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder<Builder>
           implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNodeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_EventNode_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_EventNode_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.Builder.class);
          }

          // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_EventNode_descriptor;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode getDefaultInstanceForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.getDefaultInstance();
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode build() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode buildPartial() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode(this);
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode) {
              return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode other) {
            if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }

          // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode)
        }

        static {
          defaultInstance = new EventNode(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode)
      }

      public interface TimerNodeOrBuilder
          extends com.google.protobuf.MessageOrBuilder {

        // optional int64 timer_id = 1;
        /**
         * <code>optional int64 timer_id = 1;</code>
         */
        boolean hasTimerId();
        /**
         * <code>optional int64 timer_id = 1;</code>
         */
        long getTimerId();
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode}
       */
      public static final class TimerNode extends
          com.google.protobuf.GeneratedMessage
          implements TimerNodeOrBuilder {
        // Use TimerNode.newBuilder() to construct.
        private TimerNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private TimerNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final TimerNode defaultInstance;
        public static TimerNode getDefaultInstance() {
          return defaultInstance;
        }

        public TimerNode getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private TimerNode(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            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;
                  timerId_ = 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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_TimerNode_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_TimerNode_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.Builder.class);
        }

        public static com.google.protobuf.Parser<TimerNode> PARSER =
            new com.google.protobuf.AbstractParser<TimerNode>() {
          public TimerNode parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new TimerNode(input, extensionRegistry);
          }
        };

        @java.lang.Override
        public com.google.protobuf.Parser<TimerNode> getParserForType() {
          return PARSER;
        }

        private int bitField0_;
        // optional int64 timer_id = 1;
        public static final int TIMER_ID_FIELD_NUMBER = 1;
        private long timerId_;
        /**
         * <code>optional int64 timer_id = 1;</code>
         */
        public boolean hasTimerId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional int64 timer_id = 1;</code>
         */
        public long getTimerId() {
          return timerId_;
        }

        private void initFields() {
          timerId_ = 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, timerId_);
          }
          getUnknownFields().writeTo(output);
        }

        private int 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, timerId_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder<Builder>
           implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNodeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_TimerNode_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_TimerNode_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.Builder.class);
          }

          // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.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();
            timerId_ = 0L;
            bitField0_ = (bitField0_ & ~0x00000001);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_TimerNode_descriptor;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode getDefaultInstanceForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.getDefaultInstance();
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode build() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode buildPartial() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.timerId_ = timerId_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode) {
              return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode other) {
            if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.getDefaultInstance()) return this;
            if (other.hasTimerId()) {
              setTimerId(other.getTimerId());
            }
            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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          // optional int64 timer_id = 1;
          private long timerId_ ;
          /**
           * <code>optional int64 timer_id = 1;</code>
           */
          public boolean hasTimerId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * <code>optional int64 timer_id = 1;</code>
           */
          public long getTimerId() {
            return timerId_;
          }
          /**
           * <code>optional int64 timer_id = 1;</code>
           */
          public Builder setTimerId(long value) {
            bitField0_ |= 0x00000001;
            timerId_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional int64 timer_id = 1;</code>
           */
          public Builder clearTimerId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            timerId_ = 0L;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode)
        }

        static {
          defaultInstance = new TimerNode(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode)
      }

      public interface JoinNodeOrBuilder
          extends com.google.protobuf.MessageOrBuilder {

        // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
         */
        java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger> 
            getTriggerList();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger getTrigger(int index);
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
         */
        int getTriggerCount();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
         */
        java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTriggerOrBuilder> 
            getTriggerOrBuilderList();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTriggerOrBuilder getTriggerOrBuilder(
            int index);
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode}
       */
      public static final class JoinNode extends
          com.google.protobuf.GeneratedMessage
          implements JoinNodeOrBuilder {
        // Use JoinNode.newBuilder() to construct.
        private JoinNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private JoinNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final JoinNode defaultInstance;
        public static JoinNode getDefaultInstance() {
          return defaultInstance;
        }

        public JoinNode getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private JoinNode(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            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)) {
                    trigger_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  trigger_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.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)) {
              trigger_ = java.util.Collections.unmodifiableList(trigger_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.Builder.class);
        }

        public static com.google.protobuf.Parser<JoinNode> PARSER =
            new com.google.protobuf.AbstractParser<JoinNode>() {
          public JoinNode parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new JoinNode(input, extensionRegistry);
          }
        };

        @java.lang.Override
        public com.google.protobuf.Parser<JoinNode> getParserForType() {
          return PARSER;
        }

        public interface JoinTriggerOrBuilder
            extends com.google.protobuf.MessageOrBuilder {

          // optional int64 node_id = 1;
          /**
           * <code>optional int64 node_id = 1;</code>
           */
          boolean hasNodeId();
          /**
           * <code>optional int64 node_id = 1;</code>
           */
          long getNodeId();

          // optional int32 counter = 2;
          /**
           * <code>optional int32 counter = 2;</code>
           */
          boolean hasCounter();
          /**
           * <code>optional int32 counter = 2;</code>
           */
          int getCounter();
        }
        /**
         * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger}
         */
        public static final class JoinTrigger extends
            com.google.protobuf.GeneratedMessage
            implements JoinTriggerOrBuilder {
          // Use JoinTrigger.newBuilder() to construct.
          private JoinTrigger(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
            super(builder);
            this.unknownFields = builder.getUnknownFields();
          }
          private JoinTrigger(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

          private static final JoinTrigger defaultInstance;
          public static JoinTrigger getDefaultInstance() {
            return defaultInstance;
          }

          public JoinTrigger getDefaultInstanceForType() {
            return defaultInstance;
          }

          private final com.google.protobuf.UnknownFieldSet unknownFields;
          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
              getUnknownFields() {
            return this.unknownFields;
          }
          private JoinTrigger(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            initFields();
            int mutable_bitField0_ = 0;
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              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;
                    nodeId_ = input.readInt64();
                    break;
                  }
                  case 16: {
                    bitField0_ |= 0x00000002;
                    counter_ = 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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_JoinTrigger_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_JoinTrigger_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.Builder.class);
          }

          public static com.google.protobuf.Parser<JoinTrigger> PARSER =
              new com.google.protobuf.AbstractParser<JoinTrigger>() {
            public JoinTrigger parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new JoinTrigger(input, extensionRegistry);
            }
          };

          @java.lang.Override
          public com.google.protobuf.Parser<JoinTrigger> getParserForType() {
            return PARSER;
          }

          private int bitField0_;
          // optional int64 node_id = 1;
          public static final int NODE_ID_FIELD_NUMBER = 1;
          private long nodeId_;
          /**
           * <code>optional int64 node_id = 1;</code>
           */
          public boolean hasNodeId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * <code>optional int64 node_id = 1;</code>
           */
          public long getNodeId() {
            return nodeId_;
          }

          // optional int32 counter = 2;
          public static final int COUNTER_FIELD_NUMBER = 2;
          private int counter_;
          /**
           * <code>optional int32 counter = 2;</code>
           */
          public boolean hasCounter() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * <code>optional int32 counter = 2;</code>
           */
          public int getCounter() {
            return counter_;
          }

          private void initFields() {
            nodeId_ = 0L;
            counter_ = 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.writeInt64(1, nodeId_);
            }
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              output.writeInt32(2, counter_);
            }
            getUnknownFields().writeTo(output);
          }

          private int 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, nodeId_);
            }
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              size += com.google.protobuf.CodedOutputStream
                .computeInt32Size(2, counter_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSerializedSize = size;
            return size;
          }

          private static final long serialVersionUID = 0L;
          @java.lang.Override
          protected java.lang.Object writeReplace()
              throws java.io.ObjectStreamException {
            return super.writeReplace();
          }

          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseFrom(input, extensionRegistry);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input, extensionRegistry);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseFrom(input, extensionRegistry);
          }

          public static Builder newBuilder() { return Builder.create(); }
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger prototype) {
            return newBuilder().mergeFrom(prototype);
          }
          public Builder toBuilder() { return newBuilder(this); }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessage.Builder<Builder>
             implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTriggerOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_JoinTrigger_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_JoinTrigger_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.Builder.class);
            }

            // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.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();
              nodeId_ = 0L;
              bitField0_ = (bitField0_ & ~0x00000001);
              counter_ = 0;
              bitField0_ = (bitField0_ & ~0x00000002);
              return this;
            }

            public Builder clone() {
              return create().mergeFrom(buildPartial());
            }

            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_JoinTrigger_descriptor;
            }

            public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger getDefaultInstanceForType() {
              return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.getDefaultInstance();
            }

            public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger build() {
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger buildPartial() {
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger(this);
              int from_bitField0_ = bitField0_;
              int to_bitField0_ = 0;
              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                to_bitField0_ |= 0x00000001;
              }
              result.nodeId_ = nodeId_;
              if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                to_bitField0_ |= 0x00000002;
              }
              result.counter_ = counter_;
              result.bitField0_ = to_bitField0_;
              onBuilt();
              return result;
            }

            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger) {
                return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger other) {
              if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.getDefaultInstance()) return this;
              if (other.hasNodeId()) {
                setNodeId(other.getNodeId());
              }
              if (other.hasCounter()) {
                setCounter(other.getCounter());
              }
              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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger) e.getUnfinishedMessage();
                throw e;
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            private int bitField0_;

            // optional int64 node_id = 1;
            private long nodeId_ ;
            /**
             * <code>optional int64 node_id = 1;</code>
             */
            public boolean hasNodeId() {
              return ((bitField0_ & 0x00000001) == 0x00000001);
            }
            /**
             * <code>optional int64 node_id = 1;</code>
             */
            public long getNodeId() {
              return nodeId_;
            }
            /**
             * <code>optional int64 node_id = 1;</code>
             */
            public Builder setNodeId(long value) {
              bitField0_ |= 0x00000001;
              nodeId_ = value;
              onChanged();
              return this;
            }
            /**
             * <code>optional int64 node_id = 1;</code>
             */
            public Builder clearNodeId() {
              bitField0_ = (bitField0_ & ~0x00000001);
              nodeId_ = 0L;
              onChanged();
              return this;
            }

            // optional int32 counter = 2;
            private int counter_ ;
            /**
             * <code>optional int32 counter = 2;</code>
             */
            public boolean hasCounter() {
              return ((bitField0_ & 0x00000002) == 0x00000002);
            }
            /**
             * <code>optional int32 counter = 2;</code>
             */
            public int getCounter() {
              return counter_;
            }
            /**
             * <code>optional int32 counter = 2;</code>
             */
            public Builder setCounter(int value) {
              bitField0_ |= 0x00000002;
              counter_ = value;
              onChanged();
              return this;
            }
            /**
             * <code>optional int32 counter = 2;</code>
             */
            public Builder clearCounter() {
              bitField0_ = (bitField0_ & ~0x00000002);
              counter_ = 0;
              onChanged();
              return this;
            }

            // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger)
          }

          static {
            defaultInstance = new JoinTrigger(true);
            defaultInstance.initFields();
          }

          // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger)
        }

        // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;
        public static final int TRIGGER_FIELD_NUMBER = 1;
        private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger> trigger_;
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
         */
        public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger> getTriggerList() {
          return trigger_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
         */
        public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTriggerOrBuilder> 
            getTriggerOrBuilderList() {
          return trigger_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
         */
        public int getTriggerCount() {
          return trigger_.size();
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger getTrigger(int index) {
          return trigger_.get(index);
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTriggerOrBuilder getTriggerOrBuilder(
            int index) {
          return trigger_.get(index);
        }

        private void initFields() {
          trigger_ = 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 < trigger_.size(); i++) {
            output.writeMessage(1, trigger_.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 < trigger_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(1, trigger_.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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder<Builder>
           implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNodeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.Builder.class);
          }

          // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
              getTriggerFieldBuilder();
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            if (triggerBuilder_ == null) {
              trigger_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              triggerBuilder_.clear();
            }
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_descriptor;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode getDefaultInstanceForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.getDefaultInstance();
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode build() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode buildPartial() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode(this);
            int from_bitField0_ = bitField0_;
            if (triggerBuilder_ == null) {
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                trigger_ = java.util.Collections.unmodifiableList(trigger_);
                bitField0_ = (bitField0_ & ~0x00000001);
              }
              result.trigger_ = trigger_;
            } else {
              result.trigger_ = triggerBuilder_.build();
            }
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode) {
              return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode other) {
            if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.getDefaultInstance()) return this;
            if (triggerBuilder_ == null) {
              if (!other.trigger_.isEmpty()) {
                if (trigger_.isEmpty()) {
                  trigger_ = other.trigger_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                } else {
                  ensureTriggerIsMutable();
                  trigger_.addAll(other.trigger_);
                }
                onChanged();
              }
            } else {
              if (!other.trigger_.isEmpty()) {
                if (triggerBuilder_.isEmpty()) {
                  triggerBuilder_.dispose();
                  triggerBuilder_ = null;
                  trigger_ = other.trigger_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                  triggerBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getTriggerFieldBuilder() : null;
                } else {
                  triggerBuilder_.addAllMessages(other.trigger_);
                }
              }
            }
            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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;
          private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger> trigger_ =
            java.util.Collections.emptyList();
          private void ensureTriggerIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              trigger_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger>(trigger_);
              bitField0_ |= 0x00000001;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTriggerOrBuilder> triggerBuilder_;

          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger> getTriggerList() {
            if (triggerBuilder_ == null) {
              return java.util.Collections.unmodifiableList(trigger_);
            } else {
              return triggerBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public int getTriggerCount() {
            if (triggerBuilder_ == null) {
              return trigger_.size();
            } else {
              return triggerBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger getTrigger(int index) {
            if (triggerBuilder_ == null) {
              return trigger_.get(index);
            } else {
              return triggerBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public Builder setTrigger(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger value) {
            if (triggerBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureTriggerIsMutable();
              trigger_.set(index, value);
              onChanged();
            } else {
              triggerBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public Builder setTrigger(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.Builder builderForValue) {
            if (triggerBuilder_ == null) {
              ensureTriggerIsMutable();
              trigger_.set(index, builderForValue.build());
              onChanged();
            } else {
              triggerBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public Builder addTrigger(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger value) {
            if (triggerBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureTriggerIsMutable();
              trigger_.add(value);
              onChanged();
            } else {
              triggerBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public Builder addTrigger(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger value) {
            if (triggerBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureTriggerIsMutable();
              trigger_.add(index, value);
              onChanged();
            } else {
              triggerBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public Builder addTrigger(
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.Builder builderForValue) {
            if (triggerBuilder_ == null) {
              ensureTriggerIsMutable();
              trigger_.add(builderForValue.build());
              onChanged();
            } else {
              triggerBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public Builder addTrigger(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.Builder builderForValue) {
            if (triggerBuilder_ == null) {
              ensureTriggerIsMutable();
              trigger_.add(index, builderForValue.build());
              onChanged();
            } else {
              triggerBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public Builder addAllTrigger(
              java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger> values) {
            if (triggerBuilder_ == null) {
              ensureTriggerIsMutable();
              super.addAll(values, trigger_);
              onChanged();
            } else {
              triggerBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public Builder clearTrigger() {
            if (triggerBuilder_ == null) {
              trigger_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
              onChanged();
            } else {
              triggerBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public Builder removeTrigger(int index) {
            if (triggerBuilder_ == null) {
              ensureTriggerIsMutable();
              trigger_.remove(index);
              onChanged();
            } else {
              triggerBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.Builder getTriggerBuilder(
              int index) {
            return getTriggerFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTriggerOrBuilder getTriggerOrBuilder(
              int index) {
            if (triggerBuilder_ == null) {
              return trigger_.get(index);  } else {
              return triggerBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTriggerOrBuilder> 
               getTriggerOrBuilderList() {
            if (triggerBuilder_ != null) {
              return triggerBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(trigger_);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.Builder addTriggerBuilder() {
            return getTriggerFieldBuilder().addBuilder(
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.Builder addTriggerBuilder(
              int index) {
            return getTriggerFieldBuilder().addBuilder(
                index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger trigger = 1;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.Builder> 
               getTriggerBuilderList() {
            return getTriggerFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTriggerOrBuilder> 
              getTriggerFieldBuilder() {
            if (triggerBuilder_ == null) {
              triggerBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTrigger.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.JoinTriggerOrBuilder>(
                      trigger_,
                      ((bitField0_ & 0x00000001) == 0x00000001),
                      getParentForChildren(),
                      isClean());
              trigger_ = null;
            }
            return triggerBuilder_;
          }

          // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode)
        }

        static {
          defaultInstance = new JoinNode(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode)
      }

      public interface StateNodeOrBuilder
          extends com.google.protobuf.MessageOrBuilder {

        // repeated int64 timer_instance_id = 1;
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        java.util.List<java.lang.Long> getTimerInstanceIdList();
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        int getTimerInstanceIdCount();
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        long getTimerInstanceId(int index);
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode}
       */
      public static final class StateNode extends
          com.google.protobuf.GeneratedMessage
          implements StateNodeOrBuilder {
        // Use StateNode.newBuilder() to construct.
        private StateNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private StateNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final StateNode defaultInstance;
        public static StateNode getDefaultInstance() {
          return defaultInstance;
        }

        public StateNode getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private StateNode(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            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: {
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  timerInstanceId_.add(input.readInt64());
                  break;
                }
                case 10: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    timerInstanceId_.add(input.readInt64());
                  }
                  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_ & 0x00000001) == 0x00000001)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_StateNode_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_StateNode_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.Builder.class);
        }

        public static com.google.protobuf.Parser<StateNode> PARSER =
            new com.google.protobuf.AbstractParser<StateNode>() {
          public StateNode parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new StateNode(input, extensionRegistry);
          }
        };

        @java.lang.Override
        public com.google.protobuf.Parser<StateNode> getParserForType() {
          return PARSER;
        }

        // repeated int64 timer_instance_id = 1;
        public static final int TIMER_INSTANCE_ID_FIELD_NUMBER = 1;
        private java.util.List<java.lang.Long> timerInstanceId_;
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        public java.util.List<java.lang.Long>
            getTimerInstanceIdList() {
          return timerInstanceId_;
        }
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        public int getTimerInstanceIdCount() {
          return timerInstanceId_.size();
        }
        /**
         * <code>repeated int64 timer_instance_id = 1;</code>
         */
        public long getTimerInstanceId(int index) {
          return timerInstanceId_.get(index);
        }

        private void initFields() {
          timerInstanceId_ = 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 < timerInstanceId_.size(); i++) {
            output.writeInt64(1, timerInstanceId_.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 < timerInstanceId_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeInt64SizeNoTag(timerInstanceId_.get(i));
            }
            size += dataSize;
            size += 1 * getTimerInstanceIdList().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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder<Builder>
           implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNodeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_StateNode_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_StateNode_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.Builder.class);
          }

          // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.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();
            timerInstanceId_ = 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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_StateNode_descriptor;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode getDefaultInstanceForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.getDefaultInstance();
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode build() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode buildPartial() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode(this);
            int from_bitField0_ = bitField0_;
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.timerInstanceId_ = timerInstanceId_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode) {
              return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode other) {
            if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.getDefaultInstance()) return this;
            if (!other.timerInstanceId_.isEmpty()) {
              if (timerInstanceId_.isEmpty()) {
                timerInstanceId_ = other.timerInstanceId_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureTimerInstanceIdIsMutable();
                timerInstanceId_.addAll(other.timerInstanceId_);
              }
              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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          // repeated int64 timer_instance_id = 1;
          private java.util.List<java.lang.Long> timerInstanceId_ = java.util.Collections.emptyList();
          private void ensureTimerInstanceIdIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              timerInstanceId_ = new java.util.ArrayList<java.lang.Long>(timerInstanceId_);
              bitField0_ |= 0x00000001;
             }
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public java.util.List<java.lang.Long>
              getTimerInstanceIdList() {
            return java.util.Collections.unmodifiableList(timerInstanceId_);
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public int getTimerInstanceIdCount() {
            return timerInstanceId_.size();
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public long getTimerInstanceId(int index) {
            return timerInstanceId_.get(index);
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public Builder setTimerInstanceId(
              int index, long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public Builder addTimerInstanceId(long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public Builder addAllTimerInstanceId(
              java.lang.Iterable<? extends java.lang.Long> values) {
            ensureTimerInstanceIdIsMutable();
            super.addAll(values, timerInstanceId_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 1;</code>
           */
          public Builder clearTimerInstanceId() {
            timerInstanceId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode)
        }

        static {
          defaultInstance = new StateNode(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode)
      }

      public interface CompositeContextNodeOrBuilder
          extends com.google.protobuf.MessageOrBuilder {

        // repeated int64 timer_instance_id = 2;
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        java.util.List<java.lang.Long> getTimerInstanceIdList();
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        int getTimerInstanceIdCount();
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        long getTimerInstanceId(int index);

        // repeated .org.jbpm.marshalling.Variable variable = 3;
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
         */
        java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> 
            getVariableList();
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index);
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
         */
        int getVariableCount();
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
         */
        java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
            getVariableOrBuilderList();
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
            int index);

        // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
         */
        java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> 
            getNodeInstanceList();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance getNodeInstance(int index);
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
         */
        int getNodeInstanceCount();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
         */
        java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> 
            getNodeInstanceOrBuilderList();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder getNodeInstanceOrBuilder(
            int index);

        // repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
         */
        java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance> 
            getExclusiveGroupList();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance getExclusiveGroup(int index);
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
         */
        int getExclusiveGroupCount();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
         */
        java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder> 
            getExclusiveGroupOrBuilderList();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder getExclusiveGroupOrBuilder(
            int index);

        // repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
         */
        java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> 
            getIterationLevelsList();
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.IterationLevel getIterationLevels(int index);
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
         */
        int getIterationLevelsCount();
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
         */
        java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> 
            getIterationLevelsOrBuilderList();
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder getIterationLevelsOrBuilder(
            int index);
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode}
       */
      public static final class CompositeContextNode extends
          com.google.protobuf.GeneratedMessage
          implements CompositeContextNodeOrBuilder {
        // Use CompositeContextNode.newBuilder() to construct.
        private CompositeContextNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private CompositeContextNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final CompositeContextNode defaultInstance;
        public static CompositeContextNode getDefaultInstance() {
          return defaultInstance;
        }

        public CompositeContextNode getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private CompositeContextNode(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 16: {
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  timerInstanceId_.add(input.readInt64());
                  break;
                }
                case 18: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                    timerInstanceId_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    timerInstanceId_.add(input.readInt64());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 26: {
                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                    variable_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.Variable>();
                    mutable_bitField0_ |= 0x00000002;
                  }
                  variable_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.Variable.PARSER, extensionRegistry));
                  break;
                }
                case 34: {
                  if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                    nodeInstance_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance>();
                    mutable_bitField0_ |= 0x00000004;
                  }
                  nodeInstance_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.PARSER, extensionRegistry));
                  break;
                }
                case 42: {
                  if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                    exclusiveGroup_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance>();
                    mutable_bitField0_ |= 0x00000008;
                  }
                  exclusiveGroup_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.PARSER, extensionRegistry));
                  break;
                }
                case 50: {
                  if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                    iterationLevels_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel>();
                    mutable_bitField0_ |= 0x00000010;
                  }
                  iterationLevels_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.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)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
            }
            if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
              variable_ = java.util.Collections.unmodifiableList(variable_);
            }
            if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
              nodeInstance_ = java.util.Collections.unmodifiableList(nodeInstance_);
            }
            if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
              exclusiveGroup_ = java.util.Collections.unmodifiableList(exclusiveGroup_);
            }
            if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
              iterationLevels_ = java.util.Collections.unmodifiableList(iterationLevels_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_CompositeContextNode_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_CompositeContextNode_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.Builder.class);
        }

        public static com.google.protobuf.Parser<CompositeContextNode> PARSER =
            new com.google.protobuf.AbstractParser<CompositeContextNode>() {
          public CompositeContextNode parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new CompositeContextNode(input, extensionRegistry);
          }
        };

        @java.lang.Override
        public com.google.protobuf.Parser<CompositeContextNode> getParserForType() {
          return PARSER;
        }

        // repeated int64 timer_instance_id = 2;
        public static final int TIMER_INSTANCE_ID_FIELD_NUMBER = 2;
        private java.util.List<java.lang.Long> timerInstanceId_;
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        public java.util.List<java.lang.Long>
            getTimerInstanceIdList() {
          return timerInstanceId_;
        }
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        public int getTimerInstanceIdCount() {
          return timerInstanceId_.size();
        }
        /**
         * <code>repeated int64 timer_instance_id = 2;</code>
         */
        public long getTimerInstanceId(int index) {
          return timerInstanceId_.get(index);
        }

        // repeated .org.jbpm.marshalling.Variable variable = 3;
        public static final int VARIABLE_FIELD_NUMBER = 3;
        private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> variable_;
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
         */
        public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> getVariableList() {
          return variable_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
         */
        public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
            getVariableOrBuilderList() {
          return variable_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
         */
        public int getVariableCount() {
          return variable_.size();
        }
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index) {
          return variable_.get(index);
        }
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
            int index) {
          return variable_.get(index);
        }

        // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;
        public static final int NODE_INSTANCE_FIELD_NUMBER = 4;
        private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> nodeInstance_;
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
         */
        public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> getNodeInstanceList() {
          return nodeInstance_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
         */
        public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> 
            getNodeInstanceOrBuilderList() {
          return nodeInstance_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
         */
        public int getNodeInstanceCount() {
          return nodeInstance_.size();
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance getNodeInstance(int index) {
          return nodeInstance_.get(index);
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder getNodeInstanceOrBuilder(
            int index) {
          return nodeInstance_.get(index);
        }

        // repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;
        public static final int EXCLUSIVE_GROUP_FIELD_NUMBER = 5;
        private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance> exclusiveGroup_;
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
         */
        public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance> getExclusiveGroupList() {
          return exclusiveGroup_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
         */
        public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder> 
            getExclusiveGroupOrBuilderList() {
          return exclusiveGroup_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
         */
        public int getExclusiveGroupCount() {
          return exclusiveGroup_.size();
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance getExclusiveGroup(int index) {
          return exclusiveGroup_.get(index);
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder getExclusiveGroupOrBuilder(
            int index) {
          return exclusiveGroup_.get(index);
        }

        // repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;
        public static final int ITERATIONLEVELS_FIELD_NUMBER = 6;
        private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> iterationLevels_;
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
         */
        public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> getIterationLevelsList() {
          return iterationLevels_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
         */
        public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> 
            getIterationLevelsOrBuilderList() {
          return iterationLevels_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
         */
        public int getIterationLevelsCount() {
          return iterationLevels_.size();
        }
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel getIterationLevels(int index) {
          return iterationLevels_.get(index);
        }
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder getIterationLevelsOrBuilder(
            int index) {
          return iterationLevels_.get(index);
        }

        private void initFields() {
          timerInstanceId_ = java.util.Collections.emptyList();
          variable_ = java.util.Collections.emptyList();
          nodeInstance_ = java.util.Collections.emptyList();
          exclusiveGroup_ = java.util.Collections.emptyList();
          iterationLevels_ = 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 < timerInstanceId_.size(); i++) {
            output.writeInt64(2, timerInstanceId_.get(i));
          }
          for (int i = 0; i < variable_.size(); i++) {
            output.writeMessage(3, variable_.get(i));
          }
          for (int i = 0; i < nodeInstance_.size(); i++) {
            output.writeMessage(4, nodeInstance_.get(i));
          }
          for (int i = 0; i < exclusiveGroup_.size(); i++) {
            output.writeMessage(5, exclusiveGroup_.get(i));
          }
          for (int i = 0; i < iterationLevels_.size(); i++) {
            output.writeMessage(6, iterationLevels_.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 < timerInstanceId_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeInt64SizeNoTag(timerInstanceId_.get(i));
            }
            size += dataSize;
            size += 1 * getTimerInstanceIdList().size();
          }
          for (int i = 0; i < variable_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(3, variable_.get(i));
          }
          for (int i = 0; i < nodeInstance_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(4, nodeInstance_.get(i));
          }
          for (int i = 0; i < exclusiveGroup_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(5, exclusiveGroup_.get(i));
          }
          for (int i = 0; i < iterationLevels_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(6, iterationLevels_.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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder<Builder>
           implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNodeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_CompositeContextNode_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_CompositeContextNode_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.Builder.class);
          }

          // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
              getVariableFieldBuilder();
              getNodeInstanceFieldBuilder();
              getExclusiveGroupFieldBuilder();
              getIterationLevelsFieldBuilder();
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            timerInstanceId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            if (variableBuilder_ == null) {
              variable_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              variableBuilder_.clear();
            }
            if (nodeInstanceBuilder_ == null) {
              nodeInstance_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              nodeInstanceBuilder_.clear();
            }
            if (exclusiveGroupBuilder_ == null) {
              exclusiveGroup_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              exclusiveGroupBuilder_.clear();
            }
            if (iterationLevelsBuilder_ == null) {
              iterationLevels_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              iterationLevelsBuilder_.clear();
            }
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_CompositeContextNode_descriptor;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode getDefaultInstanceForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.getDefaultInstance();
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode build() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode buildPartial() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode(this);
            int from_bitField0_ = bitField0_;
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              timerInstanceId_ = java.util.Collections.unmodifiableList(timerInstanceId_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.timerInstanceId_ = timerInstanceId_;
            if (variableBuilder_ == null) {
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                variable_ = java.util.Collections.unmodifiableList(variable_);
                bitField0_ = (bitField0_ & ~0x00000002);
              }
              result.variable_ = variable_;
            } else {
              result.variable_ = variableBuilder_.build();
            }
            if (nodeInstanceBuilder_ == null) {
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                nodeInstance_ = java.util.Collections.unmodifiableList(nodeInstance_);
                bitField0_ = (bitField0_ & ~0x00000004);
              }
              result.nodeInstance_ = nodeInstance_;
            } else {
              result.nodeInstance_ = nodeInstanceBuilder_.build();
            }
            if (exclusiveGroupBuilder_ == null) {
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                exclusiveGroup_ = java.util.Collections.unmodifiableList(exclusiveGroup_);
                bitField0_ = (bitField0_ & ~0x00000008);
              }
              result.exclusiveGroup_ = exclusiveGroup_;
            } else {
              result.exclusiveGroup_ = exclusiveGroupBuilder_.build();
            }
            if (iterationLevelsBuilder_ == null) {
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                iterationLevels_ = java.util.Collections.unmodifiableList(iterationLevels_);
                bitField0_ = (bitField0_ & ~0x00000010);
              }
              result.iterationLevels_ = iterationLevels_;
            } else {
              result.iterationLevels_ = iterationLevelsBuilder_.build();
            }
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode) {
              return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode other) {
            if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.getDefaultInstance()) return this;
            if (!other.timerInstanceId_.isEmpty()) {
              if (timerInstanceId_.isEmpty()) {
                timerInstanceId_ = other.timerInstanceId_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureTimerInstanceIdIsMutable();
                timerInstanceId_.addAll(other.timerInstanceId_);
              }
              onChanged();
            }
            if (variableBuilder_ == null) {
              if (!other.variable_.isEmpty()) {
                if (variable_.isEmpty()) {
                  variable_ = other.variable_;
                  bitField0_ = (bitField0_ & ~0x00000002);
                } else {
                  ensureVariableIsMutable();
                  variable_.addAll(other.variable_);
                }
                onChanged();
              }
            } else {
              if (!other.variable_.isEmpty()) {
                if (variableBuilder_.isEmpty()) {
                  variableBuilder_.dispose();
                  variableBuilder_ = null;
                  variable_ = other.variable_;
                  bitField0_ = (bitField0_ & ~0x00000002);
                  variableBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getVariableFieldBuilder() : null;
                } else {
                  variableBuilder_.addAllMessages(other.variable_);
                }
              }
            }
            if (nodeInstanceBuilder_ == null) {
              if (!other.nodeInstance_.isEmpty()) {
                if (nodeInstance_.isEmpty()) {
                  nodeInstance_ = other.nodeInstance_;
                  bitField0_ = (bitField0_ & ~0x00000004);
                } else {
                  ensureNodeInstanceIsMutable();
                  nodeInstance_.addAll(other.nodeInstance_);
                }
                onChanged();
              }
            } else {
              if (!other.nodeInstance_.isEmpty()) {
                if (nodeInstanceBuilder_.isEmpty()) {
                  nodeInstanceBuilder_.dispose();
                  nodeInstanceBuilder_ = null;
                  nodeInstance_ = other.nodeInstance_;
                  bitField0_ = (bitField0_ & ~0x00000004);
                  nodeInstanceBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getNodeInstanceFieldBuilder() : null;
                } else {
                  nodeInstanceBuilder_.addAllMessages(other.nodeInstance_);
                }
              }
            }
            if (exclusiveGroupBuilder_ == null) {
              if (!other.exclusiveGroup_.isEmpty()) {
                if (exclusiveGroup_.isEmpty()) {
                  exclusiveGroup_ = other.exclusiveGroup_;
                  bitField0_ = (bitField0_ & ~0x00000008);
                } else {
                  ensureExclusiveGroupIsMutable();
                  exclusiveGroup_.addAll(other.exclusiveGroup_);
                }
                onChanged();
              }
            } else {
              if (!other.exclusiveGroup_.isEmpty()) {
                if (exclusiveGroupBuilder_.isEmpty()) {
                  exclusiveGroupBuilder_.dispose();
                  exclusiveGroupBuilder_ = null;
                  exclusiveGroup_ = other.exclusiveGroup_;
                  bitField0_ = (bitField0_ & ~0x00000008);
                  exclusiveGroupBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getExclusiveGroupFieldBuilder() : null;
                } else {
                  exclusiveGroupBuilder_.addAllMessages(other.exclusiveGroup_);
                }
              }
            }
            if (iterationLevelsBuilder_ == null) {
              if (!other.iterationLevels_.isEmpty()) {
                if (iterationLevels_.isEmpty()) {
                  iterationLevels_ = other.iterationLevels_;
                  bitField0_ = (bitField0_ & ~0x00000010);
                } else {
                  ensureIterationLevelsIsMutable();
                  iterationLevels_.addAll(other.iterationLevels_);
                }
                onChanged();
              }
            } else {
              if (!other.iterationLevels_.isEmpty()) {
                if (iterationLevelsBuilder_.isEmpty()) {
                  iterationLevelsBuilder_.dispose();
                  iterationLevelsBuilder_ = null;
                  iterationLevels_ = other.iterationLevels_;
                  bitField0_ = (bitField0_ & ~0x00000010);
                  iterationLevelsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getIterationLevelsFieldBuilder() : null;
                } else {
                  iterationLevelsBuilder_.addAllMessages(other.iterationLevels_);
                }
              }
            }
            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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          // repeated int64 timer_instance_id = 2;
          private java.util.List<java.lang.Long> timerInstanceId_ = java.util.Collections.emptyList();
          private void ensureTimerInstanceIdIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              timerInstanceId_ = new java.util.ArrayList<java.lang.Long>(timerInstanceId_);
              bitField0_ |= 0x00000001;
             }
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public java.util.List<java.lang.Long>
              getTimerInstanceIdList() {
            return java.util.Collections.unmodifiableList(timerInstanceId_);
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public int getTimerInstanceIdCount() {
            return timerInstanceId_.size();
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public long getTimerInstanceId(int index) {
            return timerInstanceId_.get(index);
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder setTimerInstanceId(
              int index, long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder addTimerInstanceId(long value) {
            ensureTimerInstanceIdIsMutable();
            timerInstanceId_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder addAllTimerInstanceId(
              java.lang.Iterable<? extends java.lang.Long> values) {
            ensureTimerInstanceIdIsMutable();
            super.addAll(values, timerInstanceId_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 timer_instance_id = 2;</code>
           */
          public Builder clearTimerInstanceId() {
            timerInstanceId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }

          // repeated .org.jbpm.marshalling.Variable variable = 3;
          private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> variable_ =
            java.util.Collections.emptyList();
          private void ensureVariableIsMutable() {
            if (!((bitField0_ & 0x00000002) == 0x00000002)) {
              variable_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.Variable>(variable_);
              bitField0_ |= 0x00000002;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> variableBuilder_;

          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> getVariableList() {
            if (variableBuilder_ == null) {
              return java.util.Collections.unmodifiableList(variable_);
            } else {
              return variableBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public int getVariableCount() {
            if (variableBuilder_ == null) {
              return variable_.size();
            } else {
              return variableBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index) {
            if (variableBuilder_ == null) {
              return variable_.get(index);
            } else {
              return variableBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public Builder setVariable(
              int index, org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
            if (variableBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureVariableIsMutable();
              variable_.set(index, value);
              onChanged();
            } else {
              variableBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public Builder setVariable(
              int index, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
            if (variableBuilder_ == null) {
              ensureVariableIsMutable();
              variable_.set(index, builderForValue.build());
              onChanged();
            } else {
              variableBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public Builder addVariable(org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
            if (variableBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureVariableIsMutable();
              variable_.add(value);
              onChanged();
            } else {
              variableBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public Builder addVariable(
              int index, org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
            if (variableBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureVariableIsMutable();
              variable_.add(index, value);
              onChanged();
            } else {
              variableBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public Builder addVariable(
              org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
            if (variableBuilder_ == null) {
              ensureVariableIsMutable();
              variable_.add(builderForValue.build());
              onChanged();
            } else {
              variableBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public Builder addVariable(
              int index, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
            if (variableBuilder_ == null) {
              ensureVariableIsMutable();
              variable_.add(index, builderForValue.build());
              onChanged();
            } else {
              variableBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public Builder addAllVariable(
              java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.Variable> values) {
            if (variableBuilder_ == null) {
              ensureVariableIsMutable();
              super.addAll(values, variable_);
              onChanged();
            } else {
              variableBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public Builder clearVariable() {
            if (variableBuilder_ == null) {
              variable_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000002);
              onChanged();
            } else {
              variableBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public Builder removeVariable(int index) {
            if (variableBuilder_ == null) {
              ensureVariableIsMutable();
              variable_.remove(index);
              onChanged();
            } else {
              variableBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder getVariableBuilder(
              int index) {
            return getVariableFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
              int index) {
            if (variableBuilder_ == null) {
              return variable_.get(index);  } else {
              return variableBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
               getVariableOrBuilderList() {
            if (variableBuilder_ != null) {
              return variableBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(variable_);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder addVariableBuilder() {
            return getVariableFieldBuilder().addBuilder(
                org.jbpm.marshalling.impl.JBPMMessages.Variable.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder addVariableBuilder(
              int index) {
            return getVariableFieldBuilder().addBuilder(
                index, org.jbpm.marshalling.impl.JBPMMessages.Variable.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 3;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder> 
               getVariableBuilderList() {
            return getVariableFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
              getVariableFieldBuilder() {
            if (variableBuilder_ == null) {
              variableBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder>(
                      variable_,
                      ((bitField0_ & 0x00000002) == 0x00000002),
                      getParentForChildren(),
                      isClean());
              variable_ = null;
            }
            return variableBuilder_;
          }

          // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;
          private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> nodeInstance_ =
            java.util.Collections.emptyList();
          private void ensureNodeInstanceIsMutable() {
            if (!((bitField0_ & 0x00000004) == 0x00000004)) {
              nodeInstance_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance>(nodeInstance_);
              bitField0_ |= 0x00000004;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> nodeInstanceBuilder_;

          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> getNodeInstanceList() {
            if (nodeInstanceBuilder_ == null) {
              return java.util.Collections.unmodifiableList(nodeInstance_);
            } else {
              return nodeInstanceBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public int getNodeInstanceCount() {
            if (nodeInstanceBuilder_ == null) {
              return nodeInstance_.size();
            } else {
              return nodeInstanceBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance getNodeInstance(int index) {
            if (nodeInstanceBuilder_ == null) {
              return nodeInstance_.get(index);
            } else {
              return nodeInstanceBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public Builder setNodeInstance(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance value) {
            if (nodeInstanceBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureNodeInstanceIsMutable();
              nodeInstance_.set(index, value);
              onChanged();
            } else {
              nodeInstanceBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public Builder setNodeInstance(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder builderForValue) {
            if (nodeInstanceBuilder_ == null) {
              ensureNodeInstanceIsMutable();
              nodeInstance_.set(index, builderForValue.build());
              onChanged();
            } else {
              nodeInstanceBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public Builder addNodeInstance(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance value) {
            if (nodeInstanceBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureNodeInstanceIsMutable();
              nodeInstance_.add(value);
              onChanged();
            } else {
              nodeInstanceBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public Builder addNodeInstance(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance value) {
            if (nodeInstanceBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureNodeInstanceIsMutable();
              nodeInstance_.add(index, value);
              onChanged();
            } else {
              nodeInstanceBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public Builder addNodeInstance(
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder builderForValue) {
            if (nodeInstanceBuilder_ == null) {
              ensureNodeInstanceIsMutable();
              nodeInstance_.add(builderForValue.build());
              onChanged();
            } else {
              nodeInstanceBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public Builder addNodeInstance(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder builderForValue) {
            if (nodeInstanceBuilder_ == null) {
              ensureNodeInstanceIsMutable();
              nodeInstance_.add(index, builderForValue.build());
              onChanged();
            } else {
              nodeInstanceBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public Builder addAllNodeInstance(
              java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> values) {
            if (nodeInstanceBuilder_ == null) {
              ensureNodeInstanceIsMutable();
              super.addAll(values, nodeInstance_);
              onChanged();
            } else {
              nodeInstanceBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public Builder clearNodeInstance() {
            if (nodeInstanceBuilder_ == null) {
              nodeInstance_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000004);
              onChanged();
            } else {
              nodeInstanceBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public Builder removeNodeInstance(int index) {
            if (nodeInstanceBuilder_ == null) {
              ensureNodeInstanceIsMutable();
              nodeInstance_.remove(index);
              onChanged();
            } else {
              nodeInstanceBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder getNodeInstanceBuilder(
              int index) {
            return getNodeInstanceFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder getNodeInstanceOrBuilder(
              int index) {
            if (nodeInstanceBuilder_ == null) {
              return nodeInstance_.get(index);  } else {
              return nodeInstanceBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> 
               getNodeInstanceOrBuilderList() {
            if (nodeInstanceBuilder_ != null) {
              return nodeInstanceBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(nodeInstance_);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder addNodeInstanceBuilder() {
            return getNodeInstanceFieldBuilder().addBuilder(
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder addNodeInstanceBuilder(
              int index) {
            return getNodeInstanceFieldBuilder().addBuilder(
                index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 4;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder> 
               getNodeInstanceBuilderList() {
            return getNodeInstanceFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> 
              getNodeInstanceFieldBuilder() {
            if (nodeInstanceBuilder_ == null) {
              nodeInstanceBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder>(
                      nodeInstance_,
                      ((bitField0_ & 0x00000004) == 0x00000004),
                      getParentForChildren(),
                      isClean());
              nodeInstance_ = null;
            }
            return nodeInstanceBuilder_;
          }

          // repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;
          private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance> exclusiveGroup_ =
            java.util.Collections.emptyList();
          private void ensureExclusiveGroupIsMutable() {
            if (!((bitField0_ & 0x00000008) == 0x00000008)) {
              exclusiveGroup_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance>(exclusiveGroup_);
              bitField0_ |= 0x00000008;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder> exclusiveGroupBuilder_;

          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance> getExclusiveGroupList() {
            if (exclusiveGroupBuilder_ == null) {
              return java.util.Collections.unmodifiableList(exclusiveGroup_);
            } else {
              return exclusiveGroupBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public int getExclusiveGroupCount() {
            if (exclusiveGroupBuilder_ == null) {
              return exclusiveGroup_.size();
            } else {
              return exclusiveGroupBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance getExclusiveGroup(int index) {
            if (exclusiveGroupBuilder_ == null) {
              return exclusiveGroup_.get(index);
            } else {
              return exclusiveGroupBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public Builder setExclusiveGroup(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance value) {
            if (exclusiveGroupBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureExclusiveGroupIsMutable();
              exclusiveGroup_.set(index, value);
              onChanged();
            } else {
              exclusiveGroupBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public Builder setExclusiveGroup(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder builderForValue) {
            if (exclusiveGroupBuilder_ == null) {
              ensureExclusiveGroupIsMutable();
              exclusiveGroup_.set(index, builderForValue.build());
              onChanged();
            } else {
              exclusiveGroupBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public Builder addExclusiveGroup(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance value) {
            if (exclusiveGroupBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureExclusiveGroupIsMutable();
              exclusiveGroup_.add(value);
              onChanged();
            } else {
              exclusiveGroupBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public Builder addExclusiveGroup(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance value) {
            if (exclusiveGroupBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureExclusiveGroupIsMutable();
              exclusiveGroup_.add(index, value);
              onChanged();
            } else {
              exclusiveGroupBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public Builder addExclusiveGroup(
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder builderForValue) {
            if (exclusiveGroupBuilder_ == null) {
              ensureExclusiveGroupIsMutable();
              exclusiveGroup_.add(builderForValue.build());
              onChanged();
            } else {
              exclusiveGroupBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public Builder addExclusiveGroup(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder builderForValue) {
            if (exclusiveGroupBuilder_ == null) {
              ensureExclusiveGroupIsMutable();
              exclusiveGroup_.add(index, builderForValue.build());
              onChanged();
            } else {
              exclusiveGroupBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public Builder addAllExclusiveGroup(
              java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance> values) {
            if (exclusiveGroupBuilder_ == null) {
              ensureExclusiveGroupIsMutable();
              super.addAll(values, exclusiveGroup_);
              onChanged();
            } else {
              exclusiveGroupBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public Builder clearExclusiveGroup() {
            if (exclusiveGroupBuilder_ == null) {
              exclusiveGroup_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000008);
              onChanged();
            } else {
              exclusiveGroupBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public Builder removeExclusiveGroup(int index) {
            if (exclusiveGroupBuilder_ == null) {
              ensureExclusiveGroupIsMutable();
              exclusiveGroup_.remove(index);
              onChanged();
            } else {
              exclusiveGroupBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder getExclusiveGroupBuilder(
              int index) {
            return getExclusiveGroupFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder getExclusiveGroupOrBuilder(
              int index) {
            if (exclusiveGroupBuilder_ == null) {
              return exclusiveGroup_.get(index);  } else {
              return exclusiveGroupBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder> 
               getExclusiveGroupOrBuilderList() {
            if (exclusiveGroupBuilder_ != null) {
              return exclusiveGroupBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(exclusiveGroup_);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder addExclusiveGroupBuilder() {
            return getExclusiveGroupFieldBuilder().addBuilder(
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder addExclusiveGroupBuilder(
              int index) {
            return getExclusiveGroupFieldBuilder().addBuilder(
                index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 5;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder> 
               getExclusiveGroupBuilderList() {
            return getExclusiveGroupFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder> 
              getExclusiveGroupFieldBuilder() {
            if (exclusiveGroupBuilder_ == null) {
              exclusiveGroupBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder>(
                      exclusiveGroup_,
                      ((bitField0_ & 0x00000008) == 0x00000008),
                      getParentForChildren(),
                      isClean());
              exclusiveGroup_ = null;
            }
            return exclusiveGroupBuilder_;
          }

          // repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;
          private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> iterationLevels_ =
            java.util.Collections.emptyList();
          private void ensureIterationLevelsIsMutable() {
            if (!((bitField0_ & 0x00000010) == 0x00000010)) {
              iterationLevels_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel>(iterationLevels_);
              bitField0_ |= 0x00000010;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.IterationLevel, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder, org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> iterationLevelsBuilder_;

          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> getIterationLevelsList() {
            if (iterationLevelsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(iterationLevels_);
            } else {
              return iterationLevelsBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public int getIterationLevelsCount() {
            if (iterationLevelsBuilder_ == null) {
              return iterationLevels_.size();
            } else {
              return iterationLevelsBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel getIterationLevels(int index) {
            if (iterationLevelsBuilder_ == null) {
              return iterationLevels_.get(index);
            } else {
              return iterationLevelsBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public Builder setIterationLevels(
              int index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel value) {
            if (iterationLevelsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureIterationLevelsIsMutable();
              iterationLevels_.set(index, value);
              onChanged();
            } else {
              iterationLevelsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public Builder setIterationLevels(
              int index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder builderForValue) {
            if (iterationLevelsBuilder_ == null) {
              ensureIterationLevelsIsMutable();
              iterationLevels_.set(index, builderForValue.build());
              onChanged();
            } else {
              iterationLevelsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public Builder addIterationLevels(org.jbpm.marshalling.impl.JBPMMessages.IterationLevel value) {
            if (iterationLevelsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureIterationLevelsIsMutable();
              iterationLevels_.add(value);
              onChanged();
            } else {
              iterationLevelsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public Builder addIterationLevels(
              int index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel value) {
            if (iterationLevelsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureIterationLevelsIsMutable();
              iterationLevels_.add(index, value);
              onChanged();
            } else {
              iterationLevelsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public Builder addIterationLevels(
              org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder builderForValue) {
            if (iterationLevelsBuilder_ == null) {
              ensureIterationLevelsIsMutable();
              iterationLevels_.add(builderForValue.build());
              onChanged();
            } else {
              iterationLevelsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public Builder addIterationLevels(
              int index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder builderForValue) {
            if (iterationLevelsBuilder_ == null) {
              ensureIterationLevelsIsMutable();
              iterationLevels_.add(index, builderForValue.build());
              onChanged();
            } else {
              iterationLevelsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public Builder addAllIterationLevels(
              java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> values) {
            if (iterationLevelsBuilder_ == null) {
              ensureIterationLevelsIsMutable();
              super.addAll(values, iterationLevels_);
              onChanged();
            } else {
              iterationLevelsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public Builder clearIterationLevels() {
            if (iterationLevelsBuilder_ == null) {
              iterationLevels_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000010);
              onChanged();
            } else {
              iterationLevelsBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public Builder removeIterationLevels(int index) {
            if (iterationLevelsBuilder_ == null) {
              ensureIterationLevelsIsMutable();
              iterationLevels_.remove(index);
              onChanged();
            } else {
              iterationLevelsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder getIterationLevelsBuilder(
              int index) {
            return getIterationLevelsFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder getIterationLevelsOrBuilder(
              int index) {
            if (iterationLevelsBuilder_ == null) {
              return iterationLevels_.get(index);  } else {
              return iterationLevelsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> 
               getIterationLevelsOrBuilderList() {
            if (iterationLevelsBuilder_ != null) {
              return iterationLevelsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(iterationLevels_);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder addIterationLevelsBuilder() {
            return getIterationLevelsFieldBuilder().addBuilder(
                org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder addIterationLevelsBuilder(
              int index) {
            return getIterationLevelsFieldBuilder().addBuilder(
                index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 6;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder> 
               getIterationLevelsBuilderList() {
            return getIterationLevelsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.IterationLevel, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder, org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> 
              getIterationLevelsFieldBuilder() {
            if (iterationLevelsBuilder_ == null) {
              iterationLevelsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  org.jbpm.marshalling.impl.JBPMMessages.IterationLevel, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder, org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder>(
                      iterationLevels_,
                      ((bitField0_ & 0x00000010) == 0x00000010),
                      getParentForChildren(),
                      isClean());
              iterationLevels_ = null;
            }
            return iterationLevelsBuilder_;
          }

          // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode)
        }

        static {
          defaultInstance = new CompositeContextNode(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode)
      }

      public interface ForEachNodeOrBuilder
          extends com.google.protobuf.MessageOrBuilder {

        // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
         */
        java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> 
            getNodeInstanceList();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance getNodeInstance(int index);
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
         */
        int getNodeInstanceCount();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
         */
        java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> 
            getNodeInstanceOrBuilderList();
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder getNodeInstanceOrBuilder(
            int index);

        // repeated .org.jbpm.marshalling.Variable variable = 2;
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
         */
        java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> 
            getVariableList();
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index);
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
         */
        int getVariableCount();
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
         */
        java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
            getVariableOrBuilderList();
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
            int index);

        // repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
         */
        java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> 
            getIterationLevelsList();
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.IterationLevel getIterationLevels(int index);
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
         */
        int getIterationLevelsCount();
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
         */
        java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> 
            getIterationLevelsOrBuilderList();
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
         */
        org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder getIterationLevelsOrBuilder(
            int index);
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode}
       */
      public static final class ForEachNode extends
          com.google.protobuf.GeneratedMessage
          implements ForEachNodeOrBuilder {
        // Use ForEachNode.newBuilder() to construct.
        private ForEachNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private ForEachNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final ForEachNode defaultInstance;
        public static ForEachNode getDefaultInstance() {
          return defaultInstance;
        }

        public ForEachNode getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private ForEachNode(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            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)) {
                    nodeInstance_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  nodeInstance_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.PARSER, extensionRegistry));
                  break;
                }
                case 18: {
                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                    variable_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.Variable>();
                    mutable_bitField0_ |= 0x00000002;
                  }
                  variable_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.Variable.PARSER, extensionRegistry));
                  break;
                }
                case 26: {
                  if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                    iterationLevels_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel>();
                    mutable_bitField0_ |= 0x00000004;
                  }
                  iterationLevels_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.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)) {
              nodeInstance_ = java.util.Collections.unmodifiableList(nodeInstance_);
            }
            if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
              variable_ = java.util.Collections.unmodifiableList(variable_);
            }
            if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
              iterationLevels_ = java.util.Collections.unmodifiableList(iterationLevels_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_ForEachNode_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_ForEachNode_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.Builder.class);
        }

        public static com.google.protobuf.Parser<ForEachNode> PARSER =
            new com.google.protobuf.AbstractParser<ForEachNode>() {
          public ForEachNode parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new ForEachNode(input, extensionRegistry);
          }
        };

        @java.lang.Override
        public com.google.protobuf.Parser<ForEachNode> getParserForType() {
          return PARSER;
        }

        // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;
        public static final int NODE_INSTANCE_FIELD_NUMBER = 1;
        private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> nodeInstance_;
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
         */
        public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> getNodeInstanceList() {
          return nodeInstance_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
         */
        public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> 
            getNodeInstanceOrBuilderList() {
          return nodeInstance_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
         */
        public int getNodeInstanceCount() {
          return nodeInstance_.size();
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance getNodeInstance(int index) {
          return nodeInstance_.get(index);
        }
        /**
         * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder getNodeInstanceOrBuilder(
            int index) {
          return nodeInstance_.get(index);
        }

        // repeated .org.jbpm.marshalling.Variable variable = 2;
        public static final int VARIABLE_FIELD_NUMBER = 2;
        private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> variable_;
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
         */
        public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> getVariableList() {
          return variable_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
         */
        public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
            getVariableOrBuilderList() {
          return variable_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
         */
        public int getVariableCount() {
          return variable_.size();
        }
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index) {
          return variable_.get(index);
        }
        /**
         * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
            int index) {
          return variable_.get(index);
        }

        // repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;
        public static final int ITERATIONLEVELS_FIELD_NUMBER = 3;
        private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> iterationLevels_;
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
         */
        public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> getIterationLevelsList() {
          return iterationLevels_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
         */
        public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> 
            getIterationLevelsOrBuilderList() {
          return iterationLevels_;
        }
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
         */
        public int getIterationLevelsCount() {
          return iterationLevels_.size();
        }
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel getIterationLevels(int index) {
          return iterationLevels_.get(index);
        }
        /**
         * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder getIterationLevelsOrBuilder(
            int index) {
          return iterationLevels_.get(index);
        }

        private void initFields() {
          nodeInstance_ = java.util.Collections.emptyList();
          variable_ = java.util.Collections.emptyList();
          iterationLevels_ = 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 < nodeInstance_.size(); i++) {
            output.writeMessage(1, nodeInstance_.get(i));
          }
          for (int i = 0; i < variable_.size(); i++) {
            output.writeMessage(2, variable_.get(i));
          }
          for (int i = 0; i < iterationLevels_.size(); i++) {
            output.writeMessage(3, iterationLevels_.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 < nodeInstance_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(1, nodeInstance_.get(i));
          }
          for (int i = 0; i < variable_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(2, variable_.get(i));
          }
          for (int i = 0; i < iterationLevels_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(3, iterationLevels_.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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder<Builder>
           implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNodeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_ForEachNode_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_ForEachNode_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.Builder.class);
          }

          // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
              getNodeInstanceFieldBuilder();
              getVariableFieldBuilder();
              getIterationLevelsFieldBuilder();
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            if (nodeInstanceBuilder_ == null) {
              nodeInstance_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              nodeInstanceBuilder_.clear();
            }
            if (variableBuilder_ == null) {
              variable_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              variableBuilder_.clear();
            }
            if (iterationLevelsBuilder_ == null) {
              iterationLevels_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              iterationLevelsBuilder_.clear();
            }
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_ForEachNode_descriptor;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode getDefaultInstanceForType() {
            return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.getDefaultInstance();
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode build() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode buildPartial() {
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode(this);
            int from_bitField0_ = bitField0_;
            if (nodeInstanceBuilder_ == null) {
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                nodeInstance_ = java.util.Collections.unmodifiableList(nodeInstance_);
                bitField0_ = (bitField0_ & ~0x00000001);
              }
              result.nodeInstance_ = nodeInstance_;
            } else {
              result.nodeInstance_ = nodeInstanceBuilder_.build();
            }
            if (variableBuilder_ == null) {
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                variable_ = java.util.Collections.unmodifiableList(variable_);
                bitField0_ = (bitField0_ & ~0x00000002);
              }
              result.variable_ = variable_;
            } else {
              result.variable_ = variableBuilder_.build();
            }
            if (iterationLevelsBuilder_ == null) {
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                iterationLevels_ = java.util.Collections.unmodifiableList(iterationLevels_);
                bitField0_ = (bitField0_ & ~0x00000004);
              }
              result.iterationLevels_ = iterationLevels_;
            } else {
              result.iterationLevels_ = iterationLevelsBuilder_.build();
            }
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode) {
              return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode other) {
            if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.getDefaultInstance()) return this;
            if (nodeInstanceBuilder_ == null) {
              if (!other.nodeInstance_.isEmpty()) {
                if (nodeInstance_.isEmpty()) {
                  nodeInstance_ = other.nodeInstance_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                } else {
                  ensureNodeInstanceIsMutable();
                  nodeInstance_.addAll(other.nodeInstance_);
                }
                onChanged();
              }
            } else {
              if (!other.nodeInstance_.isEmpty()) {
                if (nodeInstanceBuilder_.isEmpty()) {
                  nodeInstanceBuilder_.dispose();
                  nodeInstanceBuilder_ = null;
                  nodeInstance_ = other.nodeInstance_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                  nodeInstanceBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getNodeInstanceFieldBuilder() : null;
                } else {
                  nodeInstanceBuilder_.addAllMessages(other.nodeInstance_);
                }
              }
            }
            if (variableBuilder_ == null) {
              if (!other.variable_.isEmpty()) {
                if (variable_.isEmpty()) {
                  variable_ = other.variable_;
                  bitField0_ = (bitField0_ & ~0x00000002);
                } else {
                  ensureVariableIsMutable();
                  variable_.addAll(other.variable_);
                }
                onChanged();
              }
            } else {
              if (!other.variable_.isEmpty()) {
                if (variableBuilder_.isEmpty()) {
                  variableBuilder_.dispose();
                  variableBuilder_ = null;
                  variable_ = other.variable_;
                  bitField0_ = (bitField0_ & ~0x00000002);
                  variableBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getVariableFieldBuilder() : null;
                } else {
                  variableBuilder_.addAllMessages(other.variable_);
                }
              }
            }
            if (iterationLevelsBuilder_ == null) {
              if (!other.iterationLevels_.isEmpty()) {
                if (iterationLevels_.isEmpty()) {
                  iterationLevels_ = other.iterationLevels_;
                  bitField0_ = (bitField0_ & ~0x00000004);
                } else {
                  ensureIterationLevelsIsMutable();
                  iterationLevels_.addAll(other.iterationLevels_);
                }
                onChanged();
              }
            } else {
              if (!other.iterationLevels_.isEmpty()) {
                if (iterationLevelsBuilder_.isEmpty()) {
                  iterationLevelsBuilder_.dispose();
                  iterationLevelsBuilder_ = null;
                  iterationLevels_ = other.iterationLevels_;
                  bitField0_ = (bitField0_ & ~0x00000004);
                  iterationLevelsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getIterationLevelsFieldBuilder() : null;
                } else {
                  iterationLevelsBuilder_.addAllMessages(other.iterationLevels_);
                }
              }
            }
            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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;
          private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> nodeInstance_ =
            java.util.Collections.emptyList();
          private void ensureNodeInstanceIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              nodeInstance_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance>(nodeInstance_);
              bitField0_ |= 0x00000001;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> nodeInstanceBuilder_;

          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> getNodeInstanceList() {
            if (nodeInstanceBuilder_ == null) {
              return java.util.Collections.unmodifiableList(nodeInstance_);
            } else {
              return nodeInstanceBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public int getNodeInstanceCount() {
            if (nodeInstanceBuilder_ == null) {
              return nodeInstance_.size();
            } else {
              return nodeInstanceBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance getNodeInstance(int index) {
            if (nodeInstanceBuilder_ == null) {
              return nodeInstance_.get(index);
            } else {
              return nodeInstanceBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public Builder setNodeInstance(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance value) {
            if (nodeInstanceBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureNodeInstanceIsMutable();
              nodeInstance_.set(index, value);
              onChanged();
            } else {
              nodeInstanceBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public Builder setNodeInstance(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder builderForValue) {
            if (nodeInstanceBuilder_ == null) {
              ensureNodeInstanceIsMutable();
              nodeInstance_.set(index, builderForValue.build());
              onChanged();
            } else {
              nodeInstanceBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public Builder addNodeInstance(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance value) {
            if (nodeInstanceBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureNodeInstanceIsMutable();
              nodeInstance_.add(value);
              onChanged();
            } else {
              nodeInstanceBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public Builder addNodeInstance(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance value) {
            if (nodeInstanceBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureNodeInstanceIsMutable();
              nodeInstance_.add(index, value);
              onChanged();
            } else {
              nodeInstanceBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public Builder addNodeInstance(
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder builderForValue) {
            if (nodeInstanceBuilder_ == null) {
              ensureNodeInstanceIsMutable();
              nodeInstance_.add(builderForValue.build());
              onChanged();
            } else {
              nodeInstanceBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public Builder addNodeInstance(
              int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder builderForValue) {
            if (nodeInstanceBuilder_ == null) {
              ensureNodeInstanceIsMutable();
              nodeInstance_.add(index, builderForValue.build());
              onChanged();
            } else {
              nodeInstanceBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public Builder addAllNodeInstance(
              java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> values) {
            if (nodeInstanceBuilder_ == null) {
              ensureNodeInstanceIsMutable();
              super.addAll(values, nodeInstance_);
              onChanged();
            } else {
              nodeInstanceBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public Builder clearNodeInstance() {
            if (nodeInstanceBuilder_ == null) {
              nodeInstance_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
              onChanged();
            } else {
              nodeInstanceBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public Builder removeNodeInstance(int index) {
            if (nodeInstanceBuilder_ == null) {
              ensureNodeInstanceIsMutable();
              nodeInstance_.remove(index);
              onChanged();
            } else {
              nodeInstanceBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder getNodeInstanceBuilder(
              int index) {
            return getNodeInstanceFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder getNodeInstanceOrBuilder(
              int index) {
            if (nodeInstanceBuilder_ == null) {
              return nodeInstance_.get(index);  } else {
              return nodeInstanceBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> 
               getNodeInstanceOrBuilderList() {
            if (nodeInstanceBuilder_ != null) {
              return nodeInstanceBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(nodeInstance_);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder addNodeInstanceBuilder() {
            return getNodeInstanceFieldBuilder().addBuilder(
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder addNodeInstanceBuilder(
              int index) {
            return getNodeInstanceFieldBuilder().addBuilder(
                index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 1;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder> 
               getNodeInstanceBuilderList() {
            return getNodeInstanceFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> 
              getNodeInstanceFieldBuilder() {
            if (nodeInstanceBuilder_ == null) {
              nodeInstanceBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder>(
                      nodeInstance_,
                      ((bitField0_ & 0x00000001) == 0x00000001),
                      getParentForChildren(),
                      isClean());
              nodeInstance_ = null;
            }
            return nodeInstanceBuilder_;
          }

          // repeated .org.jbpm.marshalling.Variable variable = 2;
          private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> variable_ =
            java.util.Collections.emptyList();
          private void ensureVariableIsMutable() {
            if (!((bitField0_ & 0x00000002) == 0x00000002)) {
              variable_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.Variable>(variable_);
              bitField0_ |= 0x00000002;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> variableBuilder_;

          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> getVariableList() {
            if (variableBuilder_ == null) {
              return java.util.Collections.unmodifiableList(variable_);
            } else {
              return variableBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public int getVariableCount() {
            if (variableBuilder_ == null) {
              return variable_.size();
            } else {
              return variableBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index) {
            if (variableBuilder_ == null) {
              return variable_.get(index);
            } else {
              return variableBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public Builder setVariable(
              int index, org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
            if (variableBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureVariableIsMutable();
              variable_.set(index, value);
              onChanged();
            } else {
              variableBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public Builder setVariable(
              int index, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
            if (variableBuilder_ == null) {
              ensureVariableIsMutable();
              variable_.set(index, builderForValue.build());
              onChanged();
            } else {
              variableBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public Builder addVariable(org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
            if (variableBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureVariableIsMutable();
              variable_.add(value);
              onChanged();
            } else {
              variableBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public Builder addVariable(
              int index, org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
            if (variableBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureVariableIsMutable();
              variable_.add(index, value);
              onChanged();
            } else {
              variableBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public Builder addVariable(
              org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
            if (variableBuilder_ == null) {
              ensureVariableIsMutable();
              variable_.add(builderForValue.build());
              onChanged();
            } else {
              variableBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public Builder addVariable(
              int index, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
            if (variableBuilder_ == null) {
              ensureVariableIsMutable();
              variable_.add(index, builderForValue.build());
              onChanged();
            } else {
              variableBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public Builder addAllVariable(
              java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.Variable> values) {
            if (variableBuilder_ == null) {
              ensureVariableIsMutable();
              super.addAll(values, variable_);
              onChanged();
            } else {
              variableBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public Builder clearVariable() {
            if (variableBuilder_ == null) {
              variable_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000002);
              onChanged();
            } else {
              variableBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public Builder removeVariable(int index) {
            if (variableBuilder_ == null) {
              ensureVariableIsMutable();
              variable_.remove(index);
              onChanged();
            } else {
              variableBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder getVariableBuilder(
              int index) {
            return getVariableFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
              int index) {
            if (variableBuilder_ == null) {
              return variable_.get(index);  } else {
              return variableBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
               getVariableOrBuilderList() {
            if (variableBuilder_ != null) {
              return variableBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(variable_);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder addVariableBuilder() {
            return getVariableFieldBuilder().addBuilder(
                org.jbpm.marshalling.impl.JBPMMessages.Variable.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder addVariableBuilder(
              int index) {
            return getVariableFieldBuilder().addBuilder(
                index, org.jbpm.marshalling.impl.JBPMMessages.Variable.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.Variable variable = 2;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder> 
               getVariableBuilderList() {
            return getVariableFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
              getVariableFieldBuilder() {
            if (variableBuilder_ == null) {
              variableBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder>(
                      variable_,
                      ((bitField0_ & 0x00000002) == 0x00000002),
                      getParentForChildren(),
                      isClean());
              variable_ = null;
            }
            return variableBuilder_;
          }

          // repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;
          private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> iterationLevels_ =
            java.util.Collections.emptyList();
          private void ensureIterationLevelsIsMutable() {
            if (!((bitField0_ & 0x00000004) == 0x00000004)) {
              iterationLevels_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel>(iterationLevels_);
              bitField0_ |= 0x00000004;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.IterationLevel, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder, org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> iterationLevelsBuilder_;

          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> getIterationLevelsList() {
            if (iterationLevelsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(iterationLevels_);
            } else {
              return iterationLevelsBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public int getIterationLevelsCount() {
            if (iterationLevelsBuilder_ == null) {
              return iterationLevels_.size();
            } else {
              return iterationLevelsBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel getIterationLevels(int index) {
            if (iterationLevelsBuilder_ == null) {
              return iterationLevels_.get(index);
            } else {
              return iterationLevelsBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public Builder setIterationLevels(
              int index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel value) {
            if (iterationLevelsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureIterationLevelsIsMutable();
              iterationLevels_.set(index, value);
              onChanged();
            } else {
              iterationLevelsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public Builder setIterationLevels(
              int index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder builderForValue) {
            if (iterationLevelsBuilder_ == null) {
              ensureIterationLevelsIsMutable();
              iterationLevels_.set(index, builderForValue.build());
              onChanged();
            } else {
              iterationLevelsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public Builder addIterationLevels(org.jbpm.marshalling.impl.JBPMMessages.IterationLevel value) {
            if (iterationLevelsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureIterationLevelsIsMutable();
              iterationLevels_.add(value);
              onChanged();
            } else {
              iterationLevelsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public Builder addIterationLevels(
              int index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel value) {
            if (iterationLevelsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureIterationLevelsIsMutable();
              iterationLevels_.add(index, value);
              onChanged();
            } else {
              iterationLevelsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public Builder addIterationLevels(
              org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder builderForValue) {
            if (iterationLevelsBuilder_ == null) {
              ensureIterationLevelsIsMutable();
              iterationLevels_.add(builderForValue.build());
              onChanged();
            } else {
              iterationLevelsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public Builder addIterationLevels(
              int index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder builderForValue) {
            if (iterationLevelsBuilder_ == null) {
              ensureIterationLevelsIsMutable();
              iterationLevels_.add(index, builderForValue.build());
              onChanged();
            } else {
              iterationLevelsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public Builder addAllIterationLevels(
              java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> values) {
            if (iterationLevelsBuilder_ == null) {
              ensureIterationLevelsIsMutable();
              super.addAll(values, iterationLevels_);
              onChanged();
            } else {
              iterationLevelsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public Builder clearIterationLevels() {
            if (iterationLevelsBuilder_ == null) {
              iterationLevels_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000004);
              onChanged();
            } else {
              iterationLevelsBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public Builder removeIterationLevels(int index) {
            if (iterationLevelsBuilder_ == null) {
              ensureIterationLevelsIsMutable();
              iterationLevels_.remove(index);
              onChanged();
            } else {
              iterationLevelsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder getIterationLevelsBuilder(
              int index) {
            return getIterationLevelsFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder getIterationLevelsOrBuilder(
              int index) {
            if (iterationLevelsBuilder_ == null) {
              return iterationLevels_.get(index);  } else {
              return iterationLevelsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> 
               getIterationLevelsOrBuilderList() {
            if (iterationLevelsBuilder_ != null) {
              return iterationLevelsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(iterationLevels_);
            }
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder addIterationLevelsBuilder() {
            return getIterationLevelsFieldBuilder().addBuilder(
                org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder addIterationLevelsBuilder(
              int index) {
            return getIterationLevelsFieldBuilder().addBuilder(
                index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.getDefaultInstance());
          }
          /**
           * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 3;</code>
           */
          public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder> 
               getIterationLevelsBuilderList() {
            return getIterationLevelsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.IterationLevel, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder, org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> 
              getIterationLevelsFieldBuilder() {
            if (iterationLevelsBuilder_ == null) {
              iterationLevelsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  org.jbpm.marshalling.impl.JBPMMessages.IterationLevel, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder, org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder>(
                      iterationLevels_,
                      ((bitField0_ & 0x00000004) == 0x00000004),
                      getParentForChildren(),
                      isClean());
              iterationLevels_ = null;
            }
            return iterationLevelsBuilder_;
          }

          // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode)
        }

        static {
          defaultInstance = new ForEachNode(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode)
      }

      private int bitField0_;
      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceType type = 1;
      public static final int TYPE_FIELD_NUMBER = 1;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceType type_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceType type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceType type = 1;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceType getType() {
        return type_;
      }

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;
      public static final int RULE_SET_FIELD_NUMBER = 2;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode ruleSet_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
       */
      public boolean hasRuleSet() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode getRuleSet() {
        return ruleSet_;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNodeOrBuilder getRuleSetOrBuilder() {
        return ruleSet_;
      }

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;
      public static final int HUMAN_TASK_FIELD_NUMBER = 3;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode humanTask_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
       */
      public boolean hasHumanTask() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode getHumanTask() {
        return humanTask_;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNodeOrBuilder getHumanTaskOrBuilder() {
        return humanTask_;
      }

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;
      public static final int WORK_ITEM_FIELD_NUMBER = 4;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode workItem_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
       */
      public boolean hasWorkItem() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode getWorkItem() {
        return workItem_;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNodeOrBuilder getWorkItemOrBuilder() {
        return workItem_;
      }

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;
      public static final int SUB_PROCESS_FIELD_NUMBER = 5;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode subProcess_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
       */
      public boolean hasSubProcess() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode getSubProcess() {
        return subProcess_;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNodeOrBuilder getSubProcessOrBuilder() {
        return subProcess_;
      }

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;
      public static final int MILESTONE_FIELD_NUMBER = 6;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode milestone_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
       */
      public boolean hasMilestone() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode getMilestone() {
        return milestone_;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNodeOrBuilder getMilestoneOrBuilder() {
        return milestone_;
      }

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;
      public static final int EVENT_FIELD_NUMBER = 7;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode event_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
       */
      public boolean hasEvent() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode getEvent() {
        return event_;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNodeOrBuilder getEventOrBuilder() {
        return event_;
      }

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;
      public static final int TIMER_FIELD_NUMBER = 8;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode timer_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
       */
      public boolean hasTimer() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode getTimer() {
        return timer_;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNodeOrBuilder getTimerOrBuilder() {
        return timer_;
      }

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;
      public static final int JOIN_FIELD_NUMBER = 9;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode join_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
       */
      public boolean hasJoin() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode getJoin() {
        return join_;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNodeOrBuilder getJoinOrBuilder() {
        return join_;
      }

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;
      public static final int STATE_FIELD_NUMBER = 10;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode state_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
       */
      public boolean hasState() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode getState() {
        return state_;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNodeOrBuilder getStateOrBuilder() {
        return state_;
      }

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;
      public static final int COMPOSITE_FIELD_NUMBER = 11;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode composite_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
       */
      public boolean hasComposite() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode getComposite() {
        return composite_;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNodeOrBuilder getCompositeOrBuilder() {
        return composite_;
      }

      // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;
      public static final int FOR_EACH_FIELD_NUMBER = 12;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode forEach_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
       */
      public boolean hasForEach() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode getForEach() {
        return forEach_;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNodeOrBuilder getForEachOrBuilder() {
        return forEach_;
      }

      private void initFields() {
        type_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceType.RULE_SET_NODE;
        ruleSet_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.getDefaultInstance();
        humanTask_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.getDefaultInstance();
        workItem_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.getDefaultInstance();
        subProcess_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.getDefaultInstance();
        milestone_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.getDefaultInstance();
        event_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.getDefaultInstance();
        timer_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.getDefaultInstance();
        join_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.getDefaultInstance();
        state_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.getDefaultInstance();
        composite_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.getDefaultInstance();
        forEach_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.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, ruleSet_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(3, humanTask_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeMessage(4, workItem_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeMessage(5, subProcess_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeMessage(6, milestone_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeMessage(7, event_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          output.writeMessage(8, timer_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          output.writeMessage(9, join_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          output.writeMessage(10, state_);
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          output.writeMessage(11, composite_);
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          output.writeMessage(12, forEach_);
        }
        getUnknownFields().writeTo(output);
      }

      private int 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, ruleSet_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, humanTask_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, workItem_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, subProcess_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, milestone_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, event_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, timer_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(9, join_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(10, state_);
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(11, composite_);
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(12, forEach_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessInstance.NodeInstanceContent}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContentOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.Builder.class);
        }

        // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getRuleSetFieldBuilder();
            getHumanTaskFieldBuilder();
            getWorkItemFieldBuilder();
            getSubProcessFieldBuilder();
            getMilestoneFieldBuilder();
            getEventFieldBuilder();
            getTimerFieldBuilder();
            getJoinFieldBuilder();
            getStateFieldBuilder();
            getCompositeFieldBuilder();
            getForEachFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          type_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceType.RULE_SET_NODE;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (ruleSetBuilder_ == null) {
            ruleSet_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.getDefaultInstance();
          } else {
            ruleSetBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          if (humanTaskBuilder_ == null) {
            humanTask_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.getDefaultInstance();
          } else {
            humanTaskBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          if (workItemBuilder_ == null) {
            workItem_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.getDefaultInstance();
          } else {
            workItemBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          if (subProcessBuilder_ == null) {
            subProcess_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.getDefaultInstance();
          } else {
            subProcessBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          if (milestoneBuilder_ == null) {
            milestone_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.getDefaultInstance();
          } else {
            milestoneBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000020);
          if (eventBuilder_ == null) {
            event_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.getDefaultInstance();
          } else {
            eventBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          if (timerBuilder_ == null) {
            timer_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.getDefaultInstance();
          } else {
            timerBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          if (joinBuilder_ == null) {
            join_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.getDefaultInstance();
          } else {
            joinBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000100);
          if (stateBuilder_ == null) {
            state_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.getDefaultInstance();
          } else {
            stateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000200);
          if (compositeBuilder_ == null) {
            composite_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.getDefaultInstance();
          } else {
            compositeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000400);
          if (forEachBuilder_ == null) {
            forEach_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.getDefaultInstance();
          } else {
            forEachBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000800);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor;
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent getDefaultInstanceForType() {
          return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.getDefaultInstance();
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent build() {
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent buildPartial() {
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent(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 (ruleSetBuilder_ == null) {
            result.ruleSet_ = ruleSet_;
          } else {
            result.ruleSet_ = ruleSetBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          if (humanTaskBuilder_ == null) {
            result.humanTask_ = humanTask_;
          } else {
            result.humanTask_ = humanTaskBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          if (workItemBuilder_ == null) {
            result.workItem_ = workItem_;
          } else {
            result.workItem_ = workItemBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          if (subProcessBuilder_ == null) {
            result.subProcess_ = subProcess_;
          } else {
            result.subProcess_ = subProcessBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          if (milestoneBuilder_ == null) {
            result.milestone_ = milestone_;
          } else {
            result.milestone_ = milestoneBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000040;
          }
          if (eventBuilder_ == null) {
            result.event_ = event_;
          } else {
            result.event_ = eventBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000080;
          }
          if (timerBuilder_ == null) {
            result.timer_ = timer_;
          } else {
            result.timer_ = timerBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000100;
          }
          if (joinBuilder_ == null) {
            result.join_ = join_;
          } else {
            result.join_ = joinBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
            to_bitField0_ |= 0x00000200;
          }
          if (stateBuilder_ == null) {
            result.state_ = state_;
          } else {
            result.state_ = stateBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
            to_bitField0_ |= 0x00000400;
          }
          if (compositeBuilder_ == null) {
            result.composite_ = composite_;
          } else {
            result.composite_ = compositeBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
            to_bitField0_ |= 0x00000800;
          }
          if (forEachBuilder_ == null) {
            result.forEach_ = forEach_;
          } else {
            result.forEach_ = forEachBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent) {
            return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent other) {
          if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.getDefaultInstance()) return this;
          if (other.hasType()) {
            setType(other.getType());
          }
          if (other.hasRuleSet()) {
            mergeRuleSet(other.getRuleSet());
          }
          if (other.hasHumanTask()) {
            mergeHumanTask(other.getHumanTask());
          }
          if (other.hasWorkItem()) {
            mergeWorkItem(other.getWorkItem());
          }
          if (other.hasSubProcess()) {
            mergeSubProcess(other.getSubProcess());
          }
          if (other.hasMilestone()) {
            mergeMilestone(other.getMilestone());
          }
          if (other.hasEvent()) {
            mergeEvent(other.getEvent());
          }
          if (other.hasTimer()) {
            mergeTimer(other.getTimer());
          }
          if (other.hasJoin()) {
            mergeJoin(other.getJoin());
          }
          if (other.hasState()) {
            mergeState(other.getState());
          }
          if (other.hasComposite()) {
            mergeComposite(other.getComposite());
          }
          if (other.hasForEach()) {
            mergeForEach(other.getForEach());
          }
          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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceType type = 1;
        private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceType type_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceType.RULE_SET_NODE;
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceType type = 1;</code>
         */
        public boolean hasType() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceType type = 1;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceType getType() {
          return type_;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceType type = 1;</code>
         */
        public Builder setType(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          type_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceType type = 1;</code>
         */
        public Builder clearType() {
          bitField0_ = (bitField0_ & ~0x00000001);
          type_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceType.RULE_SET_NODE;
          onChanged();
          return this;
        }

        // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;
        private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode ruleSet_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNodeOrBuilder> ruleSetBuilder_;
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
         */
        public boolean hasRuleSet() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode getRuleSet() {
          if (ruleSetBuilder_ == null) {
            return ruleSet_;
          } else {
            return ruleSetBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
         */
        public Builder setRuleSet(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode value) {
          if (ruleSetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ruleSet_ = value;
            onChanged();
          } else {
            ruleSetBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
         */
        public Builder setRuleSet(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.Builder builderForValue) {
          if (ruleSetBuilder_ == null) {
            ruleSet_ = builderForValue.build();
            onChanged();
          } else {
            ruleSetBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
         */
        public Builder mergeRuleSet(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode value) {
          if (ruleSetBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                ruleSet_ != org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.getDefaultInstance()) {
              ruleSet_ =
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.newBuilder(ruleSet_).mergeFrom(value).buildPartial();
            } else {
              ruleSet_ = value;
            }
            onChanged();
          } else {
            ruleSetBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
         */
        public Builder clearRuleSet() {
          if (ruleSetBuilder_ == null) {
            ruleSet_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.getDefaultInstance();
            onChanged();
          } else {
            ruleSetBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.Builder getRuleSetBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getRuleSetFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNodeOrBuilder getRuleSetOrBuilder() {
          if (ruleSetBuilder_ != null) {
            return ruleSetBuilder_.getMessageOrBuilder();
          } else {
            return ruleSet_;
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.RuleSetNode rule_set = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNodeOrBuilder> 
            getRuleSetFieldBuilder() {
          if (ruleSetBuilder_ == null) {
            ruleSetBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.RuleSetNodeOrBuilder>(
                    ruleSet_,
                    getParentForChildren(),
                    isClean());
            ruleSet_ = null;
          }
          return ruleSetBuilder_;
        }

        // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;
        private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode humanTask_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNodeOrBuilder> humanTaskBuilder_;
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
         */
        public boolean hasHumanTask() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode getHumanTask() {
          if (humanTaskBuilder_ == null) {
            return humanTask_;
          } else {
            return humanTaskBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
         */
        public Builder setHumanTask(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode value) {
          if (humanTaskBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            humanTask_ = value;
            onChanged();
          } else {
            humanTaskBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
         */
        public Builder setHumanTask(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.Builder builderForValue) {
          if (humanTaskBuilder_ == null) {
            humanTask_ = builderForValue.build();
            onChanged();
          } else {
            humanTaskBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
         */
        public Builder mergeHumanTask(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode value) {
          if (humanTaskBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004) &&
                humanTask_ != org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.getDefaultInstance()) {
              humanTask_ =
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.newBuilder(humanTask_).mergeFrom(value).buildPartial();
            } else {
              humanTask_ = value;
            }
            onChanged();
          } else {
            humanTaskBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
         */
        public Builder clearHumanTask() {
          if (humanTaskBuilder_ == null) {
            humanTask_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.getDefaultInstance();
            onChanged();
          } else {
            humanTaskBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.Builder getHumanTaskBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getHumanTaskFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNodeOrBuilder getHumanTaskOrBuilder() {
          if (humanTaskBuilder_ != null) {
            return humanTaskBuilder_.getMessageOrBuilder();
          } else {
            return humanTask_;
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.HumanTaskNode human_task = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNodeOrBuilder> 
            getHumanTaskFieldBuilder() {
          if (humanTaskBuilder_ == null) {
            humanTaskBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.HumanTaskNodeOrBuilder>(
                    humanTask_,
                    getParentForChildren(),
                    isClean());
            humanTask_ = null;
          }
          return humanTaskBuilder_;
        }

        // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;
        private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode workItem_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNodeOrBuilder> workItemBuilder_;
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
         */
        public boolean hasWorkItem() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode getWorkItem() {
          if (workItemBuilder_ == null) {
            return workItem_;
          } else {
            return workItemBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
         */
        public Builder setWorkItem(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode value) {
          if (workItemBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            workItem_ = value;
            onChanged();
          } else {
            workItemBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
         */
        public Builder setWorkItem(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.Builder builderForValue) {
          if (workItemBuilder_ == null) {
            workItem_ = builderForValue.build();
            onChanged();
          } else {
            workItemBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
         */
        public Builder mergeWorkItem(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode value) {
          if (workItemBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008) &&
                workItem_ != org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.getDefaultInstance()) {
              workItem_ =
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.newBuilder(workItem_).mergeFrom(value).buildPartial();
            } else {
              workItem_ = value;
            }
            onChanged();
          } else {
            workItemBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
         */
        public Builder clearWorkItem() {
          if (workItemBuilder_ == null) {
            workItem_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.getDefaultInstance();
            onChanged();
          } else {
            workItemBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.Builder getWorkItemBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getWorkItemFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNodeOrBuilder getWorkItemOrBuilder() {
          if (workItemBuilder_ != null) {
            return workItemBuilder_.getMessageOrBuilder();
          } else {
            return workItem_;
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.WorkItemNode work_item = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNodeOrBuilder> 
            getWorkItemFieldBuilder() {
          if (workItemBuilder_ == null) {
            workItemBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.WorkItemNodeOrBuilder>(
                    workItem_,
                    getParentForChildren(),
                    isClean());
            workItem_ = null;
          }
          return workItemBuilder_;
        }

        // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;
        private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode subProcess_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNodeOrBuilder> subProcessBuilder_;
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
         */
        public boolean hasSubProcess() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode getSubProcess() {
          if (subProcessBuilder_ == null) {
            return subProcess_;
          } else {
            return subProcessBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
         */
        public Builder setSubProcess(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode value) {
          if (subProcessBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            subProcess_ = value;
            onChanged();
          } else {
            subProcessBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
         */
        public Builder setSubProcess(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.Builder builderForValue) {
          if (subProcessBuilder_ == null) {
            subProcess_ = builderForValue.build();
            onChanged();
          } else {
            subProcessBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
         */
        public Builder mergeSubProcess(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode value) {
          if (subProcessBuilder_ == null) {
            if (((bitField0_ & 0x00000010) == 0x00000010) &&
                subProcess_ != org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.getDefaultInstance()) {
              subProcess_ =
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.newBuilder(subProcess_).mergeFrom(value).buildPartial();
            } else {
              subProcess_ = value;
            }
            onChanged();
          } else {
            subProcessBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
         */
        public Builder clearSubProcess() {
          if (subProcessBuilder_ == null) {
            subProcess_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.getDefaultInstance();
            onChanged();
          } else {
            subProcessBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.Builder getSubProcessBuilder() {
          bitField0_ |= 0x00000010;
          onChanged();
          return getSubProcessFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNodeOrBuilder getSubProcessOrBuilder() {
          if (subProcessBuilder_ != null) {
            return subProcessBuilder_.getMessageOrBuilder();
          } else {
            return subProcess_;
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.SubProcessNode sub_process = 5;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNodeOrBuilder> 
            getSubProcessFieldBuilder() {
          if (subProcessBuilder_ == null) {
            subProcessBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.SubProcessNodeOrBuilder>(
                    subProcess_,
                    getParentForChildren(),
                    isClean());
            subProcess_ = null;
          }
          return subProcessBuilder_;
        }

        // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;
        private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode milestone_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNodeOrBuilder> milestoneBuilder_;
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
         */
        public boolean hasMilestone() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode getMilestone() {
          if (milestoneBuilder_ == null) {
            return milestone_;
          } else {
            return milestoneBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
         */
        public Builder setMilestone(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode value) {
          if (milestoneBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            milestone_ = value;
            onChanged();
          } else {
            milestoneBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000020;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
         */
        public Builder setMilestone(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.Builder builderForValue) {
          if (milestoneBuilder_ == null) {
            milestone_ = builderForValue.build();
            onChanged();
          } else {
            milestoneBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000020;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
         */
        public Builder mergeMilestone(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode value) {
          if (milestoneBuilder_ == null) {
            if (((bitField0_ & 0x00000020) == 0x00000020) &&
                milestone_ != org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.getDefaultInstance()) {
              milestone_ =
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.newBuilder(milestone_).mergeFrom(value).buildPartial();
            } else {
              milestone_ = value;
            }
            onChanged();
          } else {
            milestoneBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000020;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
         */
        public Builder clearMilestone() {
          if (milestoneBuilder_ == null) {
            milestone_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.getDefaultInstance();
            onChanged();
          } else {
            milestoneBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.Builder getMilestoneBuilder() {
          bitField0_ |= 0x00000020;
          onChanged();
          return getMilestoneFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNodeOrBuilder getMilestoneOrBuilder() {
          if (milestoneBuilder_ != null) {
            return milestoneBuilder_.getMessageOrBuilder();
          } else {
            return milestone_;
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.MilestoneNode milestone = 6;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNodeOrBuilder> 
            getMilestoneFieldBuilder() {
          if (milestoneBuilder_ == null) {
            milestoneBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.MilestoneNodeOrBuilder>(
                    milestone_,
                    getParentForChildren(),
                    isClean());
            milestone_ = null;
          }
          return milestoneBuilder_;
        }

        // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;
        private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode event_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNodeOrBuilder> eventBuilder_;
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
         */
        public boolean hasEvent() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode getEvent() {
          if (eventBuilder_ == null) {
            return event_;
          } else {
            return eventBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
         */
        public Builder setEvent(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode value) {
          if (eventBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            event_ = value;
            onChanged();
          } else {
            eventBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
         */
        public Builder setEvent(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.Builder builderForValue) {
          if (eventBuilder_ == null) {
            event_ = builderForValue.build();
            onChanged();
          } else {
            eventBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
         */
        public Builder mergeEvent(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode value) {
          if (eventBuilder_ == null) {
            if (((bitField0_ & 0x00000040) == 0x00000040) &&
                event_ != org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.getDefaultInstance()) {
              event_ =
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.newBuilder(event_).mergeFrom(value).buildPartial();
            } else {
              event_ = value;
            }
            onChanged();
          } else {
            eventBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
         */
        public Builder clearEvent() {
          if (eventBuilder_ == null) {
            event_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.getDefaultInstance();
            onChanged();
          } else {
            eventBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.Builder getEventBuilder() {
          bitField0_ |= 0x00000040;
          onChanged();
          return getEventFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNodeOrBuilder getEventOrBuilder() {
          if (eventBuilder_ != null) {
            return eventBuilder_.getMessageOrBuilder();
          } else {
            return event_;
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.EventNode event = 7;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNodeOrBuilder> 
            getEventFieldBuilder() {
          if (eventBuilder_ == null) {
            eventBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.EventNodeOrBuilder>(
                    event_,
                    getParentForChildren(),
                    isClean());
            event_ = null;
          }
          return eventBuilder_;
        }

        // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;
        private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode timer_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNodeOrBuilder> timerBuilder_;
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
         */
        public boolean hasTimer() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode getTimer() {
          if (timerBuilder_ == null) {
            return timer_;
          } else {
            return timerBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
         */
        public Builder setTimer(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode value) {
          if (timerBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            timer_ = value;
            onChanged();
          } else {
            timerBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
         */
        public Builder setTimer(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.Builder builderForValue) {
          if (timerBuilder_ == null) {
            timer_ = builderForValue.build();
            onChanged();
          } else {
            timerBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
         */
        public Builder mergeTimer(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode value) {
          if (timerBuilder_ == null) {
            if (((bitField0_ & 0x00000080) == 0x00000080) &&
                timer_ != org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.getDefaultInstance()) {
              timer_ =
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.newBuilder(timer_).mergeFrom(value).buildPartial();
            } else {
              timer_ = value;
            }
            onChanged();
          } else {
            timerBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
         */
        public Builder clearTimer() {
          if (timerBuilder_ == null) {
            timer_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.getDefaultInstance();
            onChanged();
          } else {
            timerBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.Builder getTimerBuilder() {
          bitField0_ |= 0x00000080;
          onChanged();
          return getTimerFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNodeOrBuilder getTimerOrBuilder() {
          if (timerBuilder_ != null) {
            return timerBuilder_.getMessageOrBuilder();
          } else {
            return timer_;
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.TimerNode timer = 8;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNodeOrBuilder> 
            getTimerFieldBuilder() {
          if (timerBuilder_ == null) {
            timerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.TimerNodeOrBuilder>(
                    timer_,
                    getParentForChildren(),
                    isClean());
            timer_ = null;
          }
          return timerBuilder_;
        }

        // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;
        private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode join_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNodeOrBuilder> joinBuilder_;
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
         */
        public boolean hasJoin() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode getJoin() {
          if (joinBuilder_ == null) {
            return join_;
          } else {
            return joinBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
         */
        public Builder setJoin(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode value) {
          if (joinBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            join_ = value;
            onChanged();
          } else {
            joinBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
         */
        public Builder setJoin(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.Builder builderForValue) {
          if (joinBuilder_ == null) {
            join_ = builderForValue.build();
            onChanged();
          } else {
            joinBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
         */
        public Builder mergeJoin(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode value) {
          if (joinBuilder_ == null) {
            if (((bitField0_ & 0x00000100) == 0x00000100) &&
                join_ != org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.getDefaultInstance()) {
              join_ =
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.newBuilder(join_).mergeFrom(value).buildPartial();
            } else {
              join_ = value;
            }
            onChanged();
          } else {
            joinBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
         */
        public Builder clearJoin() {
          if (joinBuilder_ == null) {
            join_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.getDefaultInstance();
            onChanged();
          } else {
            joinBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000100);
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.Builder getJoinBuilder() {
          bitField0_ |= 0x00000100;
          onChanged();
          return getJoinFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNodeOrBuilder getJoinOrBuilder() {
          if (joinBuilder_ != null) {
            return joinBuilder_.getMessageOrBuilder();
          } else {
            return join_;
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.JoinNode join = 9;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNodeOrBuilder> 
            getJoinFieldBuilder() {
          if (joinBuilder_ == null) {
            joinBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.JoinNodeOrBuilder>(
                    join_,
                    getParentForChildren(),
                    isClean());
            join_ = null;
          }
          return joinBuilder_;
        }

        // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;
        private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode state_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNodeOrBuilder> stateBuilder_;
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
         */
        public boolean hasState() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode getState() {
          if (stateBuilder_ == null) {
            return state_;
          } else {
            return stateBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
         */
        public Builder setState(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode value) {
          if (stateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            state_ = value;
            onChanged();
          } else {
            stateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000200;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
         */
        public Builder setState(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.Builder builderForValue) {
          if (stateBuilder_ == null) {
            state_ = builderForValue.build();
            onChanged();
          } else {
            stateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000200;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
         */
        public Builder mergeState(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode value) {
          if (stateBuilder_ == null) {
            if (((bitField0_ & 0x00000200) == 0x00000200) &&
                state_ != org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.getDefaultInstance()) {
              state_ =
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.newBuilder(state_).mergeFrom(value).buildPartial();
            } else {
              state_ = value;
            }
            onChanged();
          } else {
            stateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000200;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
         */
        public Builder clearState() {
          if (stateBuilder_ == null) {
            state_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.getDefaultInstance();
            onChanged();
          } else {
            stateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000200);
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.Builder getStateBuilder() {
          bitField0_ |= 0x00000200;
          onChanged();
          return getStateFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNodeOrBuilder getStateOrBuilder() {
          if (stateBuilder_ != null) {
            return stateBuilder_.getMessageOrBuilder();
          } else {
            return state_;
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.StateNode state = 10;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNodeOrBuilder> 
            getStateFieldBuilder() {
          if (stateBuilder_ == null) {
            stateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.StateNodeOrBuilder>(
                    state_,
                    getParentForChildren(),
                    isClean());
            state_ = null;
          }
          return stateBuilder_;
        }

        // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;
        private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode composite_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNodeOrBuilder> compositeBuilder_;
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
         */
        public boolean hasComposite() {
          return ((bitField0_ & 0x00000400) == 0x00000400);
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode getComposite() {
          if (compositeBuilder_ == null) {
            return composite_;
          } else {
            return compositeBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
         */
        public Builder setComposite(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode value) {
          if (compositeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            composite_ = value;
            onChanged();
          } else {
            compositeBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000400;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
         */
        public Builder setComposite(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.Builder builderForValue) {
          if (compositeBuilder_ == null) {
            composite_ = builderForValue.build();
            onChanged();
          } else {
            compositeBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000400;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
         */
        public Builder mergeComposite(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode value) {
          if (compositeBuilder_ == null) {
            if (((bitField0_ & 0x00000400) == 0x00000400) &&
                composite_ != org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.getDefaultInstance()) {
              composite_ =
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.newBuilder(composite_).mergeFrom(value).buildPartial();
            } else {
              composite_ = value;
            }
            onChanged();
          } else {
            compositeBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000400;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
         */
        public Builder clearComposite() {
          if (compositeBuilder_ == null) {
            composite_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.getDefaultInstance();
            onChanged();
          } else {
            compositeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000400);
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.Builder getCompositeBuilder() {
          bitField0_ |= 0x00000400;
          onChanged();
          return getCompositeFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNodeOrBuilder getCompositeOrBuilder() {
          if (compositeBuilder_ != null) {
            return compositeBuilder_.getMessageOrBuilder();
          } else {
            return composite_;
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.CompositeContextNode composite = 11;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNodeOrBuilder> 
            getCompositeFieldBuilder() {
          if (compositeBuilder_ == null) {
            compositeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.CompositeContextNodeOrBuilder>(
                    composite_,
                    getParentForChildren(),
                    isClean());
            composite_ = null;
          }
          return compositeBuilder_;
        }

        // optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;
        private org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode forEach_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNodeOrBuilder> forEachBuilder_;
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
         */
        public boolean hasForEach() {
          return ((bitField0_ & 0x00000800) == 0x00000800);
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode getForEach() {
          if (forEachBuilder_ == null) {
            return forEach_;
          } else {
            return forEachBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
         */
        public Builder setForEach(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode value) {
          if (forEachBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            forEach_ = value;
            onChanged();
          } else {
            forEachBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000800;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
         */
        public Builder setForEach(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.Builder builderForValue) {
          if (forEachBuilder_ == null) {
            forEach_ = builderForValue.build();
            onChanged();
          } else {
            forEachBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000800;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
         */
        public Builder mergeForEach(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode value) {
          if (forEachBuilder_ == null) {
            if (((bitField0_ & 0x00000800) == 0x00000800) &&
                forEach_ != org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.getDefaultInstance()) {
              forEach_ =
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.newBuilder(forEach_).mergeFrom(value).buildPartial();
            } else {
              forEach_ = value;
            }
            onChanged();
          } else {
            forEachBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000800;
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
         */
        public Builder clearForEach() {
          if (forEachBuilder_ == null) {
            forEach_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.getDefaultInstance();
            onChanged();
          } else {
            forEachBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000800);
          return this;
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.Builder getForEachBuilder() {
          bitField0_ |= 0x00000800;
          onChanged();
          return getForEachFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
         */
        public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNodeOrBuilder getForEachOrBuilder() {
          if (forEachBuilder_ != null) {
            return forEachBuilder_.getMessageOrBuilder();
          } else {
            return forEach_;
          }
        }
        /**
         * <code>optional .org.jbpm.marshalling.ProcessInstance.NodeInstanceContent.ForEachNode for_each = 12;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNodeOrBuilder> 
            getForEachFieldBuilder() {
          if (forEachBuilder_ == null) {
            forEachBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNode.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceContent.ForEachNodeOrBuilder>(
                    forEach_,
                    getParentForChildren(),
                    isClean());
            forEach_ = null;
          }
          return forEachBuilder_;
        }

        // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent)
      }

      static {
        defaultInstance = new NodeInstanceContent(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance.NodeInstanceContent)
    }

    private int bitField0_;
    // optional string process_type = 1;
    public static final int PROCESS_TYPE_FIELD_NUMBER = 1;
    private java.lang.Object processType_;
    /**
     * <code>optional string process_type = 1;</code>
     */
    public boolean hasProcessType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional string process_type = 1;</code>
     */
    public java.lang.String getProcessType() {
      java.lang.Object ref = processType_;
      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()) {
          processType_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string process_type = 1;</code>
     */
    public com.google.protobuf.ByteString
        getProcessTypeBytes() {
      java.lang.Object ref = processType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        processType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 id = 2;
    public static final int ID_FIELD_NUMBER = 2;
    private long id_;
    /**
     * <code>optional int64 id = 2;</code>
     */
    public boolean hasId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int64 id = 2;</code>
     */
    public long getId() {
      return id_;
    }

    // optional string process_id = 3;
    public static final int PROCESS_ID_FIELD_NUMBER = 3;
    private java.lang.Object processId_;
    /**
     * <code>optional string process_id = 3;</code>
     */
    public boolean hasProcessId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string process_id = 3;</code>
     */
    public java.lang.String getProcessId() {
      java.lang.Object ref = processId_;
      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()) {
          processId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string process_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getProcessIdBytes() {
      java.lang.Object ref = processId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        processId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int32 state = 4;
    public static final int STATE_FIELD_NUMBER = 4;
    private int state_;
    /**
     * <code>optional int32 state = 4;</code>
     */
    public boolean hasState() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int32 state = 4;</code>
     */
    public int getState() {
      return state_;
    }

    // optional int64 node_instance_counter = 5;
    public static final int NODE_INSTANCE_COUNTER_FIELD_NUMBER = 5;
    private long nodeInstanceCounter_;
    /**
     * <code>optional int64 node_instance_counter = 5;</code>
     */
    public boolean hasNodeInstanceCounter() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int64 node_instance_counter = 5;</code>
     */
    public long getNodeInstanceCounter() {
      return nodeInstanceCounter_;
    }

    // optional string process_xml = 11;
    public static final int PROCESS_XML_FIELD_NUMBER = 11;
    private java.lang.Object processXml_;
    /**
     * <code>optional string process_xml = 11;</code>
     */
    public boolean hasProcessXml() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional string process_xml = 11;</code>
     */
    public java.lang.String getProcessXml() {
      java.lang.Object ref = processXml_;
      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()) {
          processXml_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string process_xml = 11;</code>
     */
    public com.google.protobuf.ByteString
        getProcessXmlBytes() {
      java.lang.Object ref = processXml_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        processXml_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 parent_process_instance_id = 12;
    public static final int PARENT_PROCESS_INSTANCE_ID_FIELD_NUMBER = 12;
    private long parentProcessInstanceId_;
    /**
     * <code>optional int64 parent_process_instance_id = 12;</code>
     */
    public boolean hasParentProcessInstanceId() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional int64 parent_process_instance_id = 12;</code>
     */
    public long getParentProcessInstanceId() {
      return parentProcessInstanceId_;
    }

    // optional string description = 15;
    public static final int DESCRIPTION_FIELD_NUMBER = 15;
    private java.lang.Object description_;
    /**
     * <code>optional string description = 15;</code>
     */
    public boolean hasDescription() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional string description = 15;</code>
     */
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      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()) {
          description_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string description = 15;</code>
     */
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;
    public static final int SWIMLANE_CONTEXT_FIELD_NUMBER = 6;
    private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance> swimlaneContext_;
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
     */
    public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance> getSwimlaneContextList() {
      return swimlaneContext_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
     */
    public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstanceOrBuilder> 
        getSwimlaneContextOrBuilderList() {
      return swimlaneContext_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
     */
    public int getSwimlaneContextCount() {
      return swimlaneContext_.size();
    }
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance getSwimlaneContext(int index) {
      return swimlaneContext_.get(index);
    }
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstanceOrBuilder getSwimlaneContextOrBuilder(
        int index) {
      return swimlaneContext_.get(index);
    }

    // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;
    public static final int NODE_INSTANCE_FIELD_NUMBER = 7;
    private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> nodeInstance_;
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
     */
    public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> getNodeInstanceList() {
      return nodeInstance_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
     */
    public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> 
        getNodeInstanceOrBuilderList() {
      return nodeInstance_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
     */
    public int getNodeInstanceCount() {
      return nodeInstance_.size();
    }
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance getNodeInstance(int index) {
      return nodeInstance_.get(index);
    }
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder getNodeInstanceOrBuilder(
        int index) {
      return nodeInstance_.get(index);
    }

    // repeated .org.jbpm.marshalling.Variable variable = 8;
    public static final int VARIABLE_FIELD_NUMBER = 8;
    private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> variable_;
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
     */
    public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> getVariableList() {
      return variable_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
     */
    public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
        getVariableOrBuilderList() {
      return variable_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
     */
    public int getVariableCount() {
      return variable_.size();
    }
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index) {
      return variable_.get(index);
    }
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
        int index) {
      return variable_.get(index);
    }

    // repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;
    public static final int EXCLUSIVE_GROUP_FIELD_NUMBER = 10;
    private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance> exclusiveGroup_;
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
     */
    public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance> getExclusiveGroupList() {
      return exclusiveGroup_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
     */
    public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder> 
        getExclusiveGroupOrBuilderList() {
      return exclusiveGroup_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
     */
    public int getExclusiveGroupCount() {
      return exclusiveGroup_.size();
    }
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance getExclusiveGroup(int index) {
      return exclusiveGroup_.get(index);
    }
    /**
     * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder getExclusiveGroupOrBuilder(
        int index) {
      return exclusiveGroup_.get(index);
    }

    // repeated string completedNodeIds = 13;
    public static final int COMPLETEDNODEIDS_FIELD_NUMBER = 13;
    private com.google.protobuf.LazyStringList completedNodeIds_;
    /**
     * <code>repeated string completedNodeIds = 13;</code>
     */
    public java.util.List<java.lang.String>
        getCompletedNodeIdsList() {
      return completedNodeIds_;
    }
    /**
     * <code>repeated string completedNodeIds = 13;</code>
     */
    public int getCompletedNodeIdsCount() {
      return completedNodeIds_.size();
    }
    /**
     * <code>repeated string completedNodeIds = 13;</code>
     */
    public java.lang.String getCompletedNodeIds(int index) {
      return completedNodeIds_.get(index);
    }
    /**
     * <code>repeated string completedNodeIds = 13;</code>
     */
    public com.google.protobuf.ByteString
        getCompletedNodeIdsBytes(int index) {
      return completedNodeIds_.getByteString(index);
    }

    // repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;
    public static final int ITERATIONLEVELS_FIELD_NUMBER = 14;
    private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> iterationLevels_;
    /**
     * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
     */
    public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> getIterationLevelsList() {
      return iterationLevels_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
     */
    public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> 
        getIterationLevelsOrBuilderList() {
      return iterationLevels_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
     */
    public int getIterationLevelsCount() {
      return iterationLevels_.size();
    }
    /**
     * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel getIterationLevels(int index) {
      return iterationLevels_.get(index);
    }
    /**
     * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder getIterationLevelsOrBuilder(
        int index) {
      return iterationLevels_.get(index);
    }

    private void initFields() {
      processType_ = "";
      id_ = 0L;
      processId_ = "";
      state_ = 0;
      nodeInstanceCounter_ = 0L;
      processXml_ = "";
      parentProcessInstanceId_ = 0L;
      description_ = "";
      swimlaneContext_ = java.util.Collections.emptyList();
      nodeInstance_ = java.util.Collections.emptyList();
      variable_ = java.util.Collections.emptyList();
      exclusiveGroup_ = java.util.Collections.emptyList();
      completedNodeIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      iterationLevels_ = 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();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getProcessTypeBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, id_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getProcessIdBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(4, state_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt64(5, nodeInstanceCounter_);
      }
      for (int i = 0; i < swimlaneContext_.size(); i++) {
        output.writeMessage(6, swimlaneContext_.get(i));
      }
      for (int i = 0; i < nodeInstance_.size(); i++) {
        output.writeMessage(7, nodeInstance_.get(i));
      }
      for (int i = 0; i < variable_.size(); i++) {
        output.writeMessage(8, variable_.get(i));
      }
      for (int i = 0; i < exclusiveGroup_.size(); i++) {
        output.writeMessage(10, exclusiveGroup_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBytes(11, getProcessXmlBytes());
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeInt64(12, parentProcessInstanceId_);
      }
      for (int i = 0; i < completedNodeIds_.size(); i++) {
        output.writeBytes(13, completedNodeIds_.getByteString(i));
      }
      for (int i = 0; i < iterationLevels_.size(); i++) {
        output.writeMessage(14, iterationLevels_.get(i));
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeBytes(15, getDescriptionBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int 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, getProcessTypeBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, id_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getProcessIdBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, state_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, nodeInstanceCounter_);
      }
      for (int i = 0; i < swimlaneContext_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, swimlaneContext_.get(i));
      }
      for (int i = 0; i < nodeInstance_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, nodeInstance_.get(i));
      }
      for (int i = 0; i < variable_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, variable_.get(i));
      }
      for (int i = 0; i < exclusiveGroup_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, exclusiveGroup_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(11, getProcessXmlBytes());
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(12, parentProcessInstanceId_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < completedNodeIds_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(completedNodeIds_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getCompletedNodeIdsList().size();
      }
      for (int i = 0; i < iterationLevels_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, iterationLevels_.get(i));
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(15, getDescriptionBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.jbpm.marshalling.ProcessInstance}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.jbpm.marshalling.impl.JBPMMessages.ProcessInstanceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.Builder.class);
      }

      // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getSwimlaneContextFieldBuilder();
          getNodeInstanceFieldBuilder();
          getVariableFieldBuilder();
          getExclusiveGroupFieldBuilder();
          getIterationLevelsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        processType_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        processId_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        state_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        nodeInstanceCounter_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000010);
        processXml_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        parentProcessInstanceId_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000040);
        description_ = "";
        bitField0_ = (bitField0_ & ~0x00000080);
        if (swimlaneContextBuilder_ == null) {
          swimlaneContext_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
        } else {
          swimlaneContextBuilder_.clear();
        }
        if (nodeInstanceBuilder_ == null) {
          nodeInstance_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
        } else {
          nodeInstanceBuilder_.clear();
        }
        if (variableBuilder_ == null) {
          variable_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
        } else {
          variableBuilder_.clear();
        }
        if (exclusiveGroupBuilder_ == null) {
          exclusiveGroup_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
        } else {
          exclusiveGroupBuilder_.clear();
        }
        completedNodeIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00001000);
        if (iterationLevelsBuilder_ == null) {
          iterationLevels_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
        } else {
          iterationLevelsBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessInstance_descriptor;
      }

      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance getDefaultInstanceForType() {
        return org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.getDefaultInstance();
      }

      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance build() {
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance buildPartial() {
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.processType_ = processType_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.id_ = id_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.processId_ = processId_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.state_ = state_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.nodeInstanceCounter_ = nodeInstanceCounter_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.processXml_ = processXml_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.parentProcessInstanceId_ = parentProcessInstanceId_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.description_ = description_;
        if (swimlaneContextBuilder_ == null) {
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            swimlaneContext_ = java.util.Collections.unmodifiableList(swimlaneContext_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.swimlaneContext_ = swimlaneContext_;
        } else {
          result.swimlaneContext_ = swimlaneContextBuilder_.build();
        }
        if (nodeInstanceBuilder_ == null) {
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            nodeInstance_ = java.util.Collections.unmodifiableList(nodeInstance_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.nodeInstance_ = nodeInstance_;
        } else {
          result.nodeInstance_ = nodeInstanceBuilder_.build();
        }
        if (variableBuilder_ == null) {
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            variable_ = java.util.Collections.unmodifiableList(variable_);
            bitField0_ = (bitField0_ & ~0x00000400);
          }
          result.variable_ = variable_;
        } else {
          result.variable_ = variableBuilder_.build();
        }
        if (exclusiveGroupBuilder_ == null) {
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            exclusiveGroup_ = java.util.Collections.unmodifiableList(exclusiveGroup_);
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.exclusiveGroup_ = exclusiveGroup_;
        } else {
          result.exclusiveGroup_ = exclusiveGroupBuilder_.build();
        }
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          completedNodeIds_ = new com.google.protobuf.UnmodifiableLazyStringList(
              completedNodeIds_);
          bitField0_ = (bitField0_ & ~0x00001000);
        }
        result.completedNodeIds_ = completedNodeIds_;
        if (iterationLevelsBuilder_ == null) {
          if (((bitField0_ & 0x00002000) == 0x00002000)) {
            iterationLevels_ = java.util.Collections.unmodifiableList(iterationLevels_);
            bitField0_ = (bitField0_ & ~0x00002000);
          }
          result.iterationLevels_ = iterationLevels_;
        } else {
          result.iterationLevels_ = iterationLevelsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance) {
          return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance other) {
        if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.getDefaultInstance()) return this;
        if (other.hasProcessType()) {
          bitField0_ |= 0x00000001;
          processType_ = other.processType_;
          onChanged();
        }
        if (other.hasId()) {
          setId(other.getId());
        }
        if (other.hasProcessId()) {
          bitField0_ |= 0x00000004;
          processId_ = other.processId_;
          onChanged();
        }
        if (other.hasState()) {
          setState(other.getState());
        }
        if (other.hasNodeInstanceCounter()) {
          setNodeInstanceCounter(other.getNodeInstanceCounter());
        }
        if (other.hasProcessXml()) {
          bitField0_ |= 0x00000020;
          processXml_ = other.processXml_;
          onChanged();
        }
        if (other.hasParentProcessInstanceId()) {
          setParentProcessInstanceId(other.getParentProcessInstanceId());
        }
        if (other.hasDescription()) {
          bitField0_ |= 0x00000080;
          description_ = other.description_;
          onChanged();
        }
        if (swimlaneContextBuilder_ == null) {
          if (!other.swimlaneContext_.isEmpty()) {
            if (swimlaneContext_.isEmpty()) {
              swimlaneContext_ = other.swimlaneContext_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureSwimlaneContextIsMutable();
              swimlaneContext_.addAll(other.swimlaneContext_);
            }
            onChanged();
          }
        } else {
          if (!other.swimlaneContext_.isEmpty()) {
            if (swimlaneContextBuilder_.isEmpty()) {
              swimlaneContextBuilder_.dispose();
              swimlaneContextBuilder_ = null;
              swimlaneContext_ = other.swimlaneContext_;
              bitField0_ = (bitField0_ & ~0x00000100);
              swimlaneContextBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSwimlaneContextFieldBuilder() : null;
            } else {
              swimlaneContextBuilder_.addAllMessages(other.swimlaneContext_);
            }
          }
        }
        if (nodeInstanceBuilder_ == null) {
          if (!other.nodeInstance_.isEmpty()) {
            if (nodeInstance_.isEmpty()) {
              nodeInstance_ = other.nodeInstance_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureNodeInstanceIsMutable();
              nodeInstance_.addAll(other.nodeInstance_);
            }
            onChanged();
          }
        } else {
          if (!other.nodeInstance_.isEmpty()) {
            if (nodeInstanceBuilder_.isEmpty()) {
              nodeInstanceBuilder_.dispose();
              nodeInstanceBuilder_ = null;
              nodeInstance_ = other.nodeInstance_;
              bitField0_ = (bitField0_ & ~0x00000200);
              nodeInstanceBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getNodeInstanceFieldBuilder() : null;
            } else {
              nodeInstanceBuilder_.addAllMessages(other.nodeInstance_);
            }
          }
        }
        if (variableBuilder_ == null) {
          if (!other.variable_.isEmpty()) {
            if (variable_.isEmpty()) {
              variable_ = other.variable_;
              bitField0_ = (bitField0_ & ~0x00000400);
            } else {
              ensureVariableIsMutable();
              variable_.addAll(other.variable_);
            }
            onChanged();
          }
        } else {
          if (!other.variable_.isEmpty()) {
            if (variableBuilder_.isEmpty()) {
              variableBuilder_.dispose();
              variableBuilder_ = null;
              variable_ = other.variable_;
              bitField0_ = (bitField0_ & ~0x00000400);
              variableBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVariableFieldBuilder() : null;
            } else {
              variableBuilder_.addAllMessages(other.variable_);
            }
          }
        }
        if (exclusiveGroupBuilder_ == null) {
          if (!other.exclusiveGroup_.isEmpty()) {
            if (exclusiveGroup_.isEmpty()) {
              exclusiveGroup_ = other.exclusiveGroup_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureExclusiveGroupIsMutable();
              exclusiveGroup_.addAll(other.exclusiveGroup_);
            }
            onChanged();
          }
        } else {
          if (!other.exclusiveGroup_.isEmpty()) {
            if (exclusiveGroupBuilder_.isEmpty()) {
              exclusiveGroupBuilder_.dispose();
              exclusiveGroupBuilder_ = null;
              exclusiveGroup_ = other.exclusiveGroup_;
              bitField0_ = (bitField0_ & ~0x00000800);
              exclusiveGroupBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getExclusiveGroupFieldBuilder() : null;
            } else {
              exclusiveGroupBuilder_.addAllMessages(other.exclusiveGroup_);
            }
          }
        }
        if (!other.completedNodeIds_.isEmpty()) {
          if (completedNodeIds_.isEmpty()) {
            completedNodeIds_ = other.completedNodeIds_;
            bitField0_ = (bitField0_ & ~0x00001000);
          } else {
            ensureCompletedNodeIdsIsMutable();
            completedNodeIds_.addAll(other.completedNodeIds_);
          }
          onChanged();
        }
        if (iterationLevelsBuilder_ == null) {
          if (!other.iterationLevels_.isEmpty()) {
            if (iterationLevels_.isEmpty()) {
              iterationLevels_ = other.iterationLevels_;
              bitField0_ = (bitField0_ & ~0x00002000);
            } else {
              ensureIterationLevelsIsMutable();
              iterationLevels_.addAll(other.iterationLevels_);
            }
            onChanged();
          }
        } else {
          if (!other.iterationLevels_.isEmpty()) {
            if (iterationLevelsBuilder_.isEmpty()) {
              iterationLevelsBuilder_.dispose();
              iterationLevelsBuilder_ = null;
              iterationLevels_ = other.iterationLevels_;
              bitField0_ = (bitField0_ & ~0x00002000);
              iterationLevelsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getIterationLevelsFieldBuilder() : null;
            } else {
              iterationLevelsBuilder_.addAllMessages(other.iterationLevels_);
            }
          }
        }
        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.jbpm.marshalling.impl.JBPMMessages.ProcessInstance parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional string process_type = 1;
      private java.lang.Object processType_ = "";
      /**
       * <code>optional string process_type = 1;</code>
       */
      public boolean hasProcessType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string process_type = 1;</code>
       */
      public java.lang.String getProcessType() {
        java.lang.Object ref = processType_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          processType_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string process_type = 1;</code>
       */
      public com.google.protobuf.ByteString
          getProcessTypeBytes() {
        java.lang.Object ref = processType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          processType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string process_type = 1;</code>
       */
      public Builder setProcessType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        processType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string process_type = 1;</code>
       */
      public Builder clearProcessType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        processType_ = getDefaultInstance().getProcessType();
        onChanged();
        return this;
      }
      /**
       * <code>optional string process_type = 1;</code>
       */
      public Builder setProcessTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        processType_ = value;
        onChanged();
        return this;
      }

      // optional int64 id = 2;
      private long id_ ;
      /**
       * <code>optional int64 id = 2;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int64 id = 2;</code>
       */
      public long getId() {
        return id_;
      }
      /**
       * <code>optional int64 id = 2;</code>
       */
      public Builder setId(long value) {
        bitField0_ |= 0x00000002;
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 id = 2;</code>
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        id_ = 0L;
        onChanged();
        return this;
      }

      // optional string process_id = 3;
      private java.lang.Object processId_ = "";
      /**
       * <code>optional string process_id = 3;</code>
       */
      public boolean hasProcessId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string process_id = 3;</code>
       */
      public java.lang.String getProcessId() {
        java.lang.Object ref = processId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          processId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string process_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getProcessIdBytes() {
        java.lang.Object ref = processId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          processId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string process_id = 3;</code>
       */
      public Builder setProcessId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        processId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string process_id = 3;</code>
       */
      public Builder clearProcessId() {
        bitField0_ = (bitField0_ & ~0x00000004);
        processId_ = getDefaultInstance().getProcessId();
        onChanged();
        return this;
      }
      /**
       * <code>optional string process_id = 3;</code>
       */
      public Builder setProcessIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        processId_ = value;
        onChanged();
        return this;
      }

      // optional int32 state = 4;
      private int state_ ;
      /**
       * <code>optional int32 state = 4;</code>
       */
      public boolean hasState() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int32 state = 4;</code>
       */
      public int getState() {
        return state_;
      }
      /**
       * <code>optional int32 state = 4;</code>
       */
      public Builder setState(int value) {
        bitField0_ |= 0x00000008;
        state_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 state = 4;</code>
       */
      public Builder clearState() {
        bitField0_ = (bitField0_ & ~0x00000008);
        state_ = 0;
        onChanged();
        return this;
      }

      // optional int64 node_instance_counter = 5;
      private long nodeInstanceCounter_ ;
      /**
       * <code>optional int64 node_instance_counter = 5;</code>
       */
      public boolean hasNodeInstanceCounter() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int64 node_instance_counter = 5;</code>
       */
      public long getNodeInstanceCounter() {
        return nodeInstanceCounter_;
      }
      /**
       * <code>optional int64 node_instance_counter = 5;</code>
       */
      public Builder setNodeInstanceCounter(long value) {
        bitField0_ |= 0x00000010;
        nodeInstanceCounter_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 node_instance_counter = 5;</code>
       */
      public Builder clearNodeInstanceCounter() {
        bitField0_ = (bitField0_ & ~0x00000010);
        nodeInstanceCounter_ = 0L;
        onChanged();
        return this;
      }

      // optional string process_xml = 11;
      private java.lang.Object processXml_ = "";
      /**
       * <code>optional string process_xml = 11;</code>
       */
      public boolean hasProcessXml() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional string process_xml = 11;</code>
       */
      public java.lang.String getProcessXml() {
        java.lang.Object ref = processXml_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          processXml_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string process_xml = 11;</code>
       */
      public com.google.protobuf.ByteString
          getProcessXmlBytes() {
        java.lang.Object ref = processXml_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          processXml_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string process_xml = 11;</code>
       */
      public Builder setProcessXml(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        processXml_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string process_xml = 11;</code>
       */
      public Builder clearProcessXml() {
        bitField0_ = (bitField0_ & ~0x00000020);
        processXml_ = getDefaultInstance().getProcessXml();
        onChanged();
        return this;
      }
      /**
       * <code>optional string process_xml = 11;</code>
       */
      public Builder setProcessXmlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        processXml_ = value;
        onChanged();
        return this;
      }

      // optional int64 parent_process_instance_id = 12;
      private long parentProcessInstanceId_ ;
      /**
       * <code>optional int64 parent_process_instance_id = 12;</code>
       */
      public boolean hasParentProcessInstanceId() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional int64 parent_process_instance_id = 12;</code>
       */
      public long getParentProcessInstanceId() {
        return parentProcessInstanceId_;
      }
      /**
       * <code>optional int64 parent_process_instance_id = 12;</code>
       */
      public Builder setParentProcessInstanceId(long value) {
        bitField0_ |= 0x00000040;
        parentProcessInstanceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 parent_process_instance_id = 12;</code>
       */
      public Builder clearParentProcessInstanceId() {
        bitField0_ = (bitField0_ & ~0x00000040);
        parentProcessInstanceId_ = 0L;
        onChanged();
        return this;
      }

      // optional string description = 15;
      private java.lang.Object description_ = "";
      /**
       * <code>optional string description = 15;</code>
       */
      public boolean hasDescription() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional string description = 15;</code>
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string description = 15;</code>
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string description = 15;</code>
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        description_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string description = 15;</code>
       */
      public Builder clearDescription() {
        bitField0_ = (bitField0_ & ~0x00000080);
        description_ = getDefaultInstance().getDescription();
        onChanged();
        return this;
      }
      /**
       * <code>optional string description = 15;</code>
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        description_ = value;
        onChanged();
        return this;
      }

      // repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;
      private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance> swimlaneContext_ =
        java.util.Collections.emptyList();
      private void ensureSwimlaneContextIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          swimlaneContext_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance>(swimlaneContext_);
          bitField0_ |= 0x00000100;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstanceOrBuilder> swimlaneContextBuilder_;

      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance> getSwimlaneContextList() {
        if (swimlaneContextBuilder_ == null) {
          return java.util.Collections.unmodifiableList(swimlaneContext_);
        } else {
          return swimlaneContextBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public int getSwimlaneContextCount() {
        if (swimlaneContextBuilder_ == null) {
          return swimlaneContext_.size();
        } else {
          return swimlaneContextBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance getSwimlaneContext(int index) {
        if (swimlaneContextBuilder_ == null) {
          return swimlaneContext_.get(index);
        } else {
          return swimlaneContextBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public Builder setSwimlaneContext(
          int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance value) {
        if (swimlaneContextBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSwimlaneContextIsMutable();
          swimlaneContext_.set(index, value);
          onChanged();
        } else {
          swimlaneContextBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public Builder setSwimlaneContext(
          int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.Builder builderForValue) {
        if (swimlaneContextBuilder_ == null) {
          ensureSwimlaneContextIsMutable();
          swimlaneContext_.set(index, builderForValue.build());
          onChanged();
        } else {
          swimlaneContextBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public Builder addSwimlaneContext(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance value) {
        if (swimlaneContextBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSwimlaneContextIsMutable();
          swimlaneContext_.add(value);
          onChanged();
        } else {
          swimlaneContextBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public Builder addSwimlaneContext(
          int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance value) {
        if (swimlaneContextBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSwimlaneContextIsMutable();
          swimlaneContext_.add(index, value);
          onChanged();
        } else {
          swimlaneContextBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public Builder addSwimlaneContext(
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.Builder builderForValue) {
        if (swimlaneContextBuilder_ == null) {
          ensureSwimlaneContextIsMutable();
          swimlaneContext_.add(builderForValue.build());
          onChanged();
        } else {
          swimlaneContextBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public Builder addSwimlaneContext(
          int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.Builder builderForValue) {
        if (swimlaneContextBuilder_ == null) {
          ensureSwimlaneContextIsMutable();
          swimlaneContext_.add(index, builderForValue.build());
          onChanged();
        } else {
          swimlaneContextBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public Builder addAllSwimlaneContext(
          java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance> values) {
        if (swimlaneContextBuilder_ == null) {
          ensureSwimlaneContextIsMutable();
          super.addAll(values, swimlaneContext_);
          onChanged();
        } else {
          swimlaneContextBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public Builder clearSwimlaneContext() {
        if (swimlaneContextBuilder_ == null) {
          swimlaneContext_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          swimlaneContextBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public Builder removeSwimlaneContext(int index) {
        if (swimlaneContextBuilder_ == null) {
          ensureSwimlaneContextIsMutable();
          swimlaneContext_.remove(index);
          onChanged();
        } else {
          swimlaneContextBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.Builder getSwimlaneContextBuilder(
          int index) {
        return getSwimlaneContextFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstanceOrBuilder getSwimlaneContextOrBuilder(
          int index) {
        if (swimlaneContextBuilder_ == null) {
          return swimlaneContext_.get(index);  } else {
          return swimlaneContextBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstanceOrBuilder> 
           getSwimlaneContextOrBuilderList() {
        if (swimlaneContextBuilder_ != null) {
          return swimlaneContextBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(swimlaneContext_);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.Builder addSwimlaneContextBuilder() {
        return getSwimlaneContextFieldBuilder().addBuilder(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.Builder addSwimlaneContextBuilder(
          int index) {
        return getSwimlaneContextFieldBuilder().addBuilder(
            index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.SwimlaneContextInstance swimlane_context = 6;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.Builder> 
           getSwimlaneContextBuilderList() {
        return getSwimlaneContextFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstanceOrBuilder> 
          getSwimlaneContextFieldBuilder() {
        if (swimlaneContextBuilder_ == null) {
          swimlaneContextBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.SwimlaneContextInstanceOrBuilder>(
                  swimlaneContext_,
                  ((bitField0_ & 0x00000100) == 0x00000100),
                  getParentForChildren(),
                  isClean());
          swimlaneContext_ = null;
        }
        return swimlaneContextBuilder_;
      }

      // repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;
      private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> nodeInstance_ =
        java.util.Collections.emptyList();
      private void ensureNodeInstanceIsMutable() {
        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
          nodeInstance_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance>(nodeInstance_);
          bitField0_ |= 0x00000200;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> nodeInstanceBuilder_;

      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> getNodeInstanceList() {
        if (nodeInstanceBuilder_ == null) {
          return java.util.Collections.unmodifiableList(nodeInstance_);
        } else {
          return nodeInstanceBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public int getNodeInstanceCount() {
        if (nodeInstanceBuilder_ == null) {
          return nodeInstance_.size();
        } else {
          return nodeInstanceBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance getNodeInstance(int index) {
        if (nodeInstanceBuilder_ == null) {
          return nodeInstance_.get(index);
        } else {
          return nodeInstanceBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public Builder setNodeInstance(
          int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance value) {
        if (nodeInstanceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeInstanceIsMutable();
          nodeInstance_.set(index, value);
          onChanged();
        } else {
          nodeInstanceBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public Builder setNodeInstance(
          int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder builderForValue) {
        if (nodeInstanceBuilder_ == null) {
          ensureNodeInstanceIsMutable();
          nodeInstance_.set(index, builderForValue.build());
          onChanged();
        } else {
          nodeInstanceBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public Builder addNodeInstance(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance value) {
        if (nodeInstanceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeInstanceIsMutable();
          nodeInstance_.add(value);
          onChanged();
        } else {
          nodeInstanceBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public Builder addNodeInstance(
          int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance value) {
        if (nodeInstanceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeInstanceIsMutable();
          nodeInstance_.add(index, value);
          onChanged();
        } else {
          nodeInstanceBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public Builder addNodeInstance(
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder builderForValue) {
        if (nodeInstanceBuilder_ == null) {
          ensureNodeInstanceIsMutable();
          nodeInstance_.add(builderForValue.build());
          onChanged();
        } else {
          nodeInstanceBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public Builder addNodeInstance(
          int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder builderForValue) {
        if (nodeInstanceBuilder_ == null) {
          ensureNodeInstanceIsMutable();
          nodeInstance_.add(index, builderForValue.build());
          onChanged();
        } else {
          nodeInstanceBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public Builder addAllNodeInstance(
          java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance> values) {
        if (nodeInstanceBuilder_ == null) {
          ensureNodeInstanceIsMutable();
          super.addAll(values, nodeInstance_);
          onChanged();
        } else {
          nodeInstanceBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public Builder clearNodeInstance() {
        if (nodeInstanceBuilder_ == null) {
          nodeInstance_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
        } else {
          nodeInstanceBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public Builder removeNodeInstance(int index) {
        if (nodeInstanceBuilder_ == null) {
          ensureNodeInstanceIsMutable();
          nodeInstance_.remove(index);
          onChanged();
        } else {
          nodeInstanceBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder getNodeInstanceBuilder(
          int index) {
        return getNodeInstanceFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder getNodeInstanceOrBuilder(
          int index) {
        if (nodeInstanceBuilder_ == null) {
          return nodeInstance_.get(index);  } else {
          return nodeInstanceBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> 
           getNodeInstanceOrBuilderList() {
        if (nodeInstanceBuilder_ != null) {
          return nodeInstanceBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(nodeInstance_);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder addNodeInstanceBuilder() {
        return getNodeInstanceFieldBuilder().addBuilder(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder addNodeInstanceBuilder(
          int index) {
        return getNodeInstanceFieldBuilder().addBuilder(
            index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.NodeInstance node_instance = 7;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder> 
           getNodeInstanceBuilderList() {
        return getNodeInstanceFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder> 
          getNodeInstanceFieldBuilder() {
        if (nodeInstanceBuilder_ == null) {
          nodeInstanceBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.NodeInstanceOrBuilder>(
                  nodeInstance_,
                  ((bitField0_ & 0x00000200) == 0x00000200),
                  getParentForChildren(),
                  isClean());
          nodeInstance_ = null;
        }
        return nodeInstanceBuilder_;
      }

      // repeated .org.jbpm.marshalling.Variable variable = 8;
      private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> variable_ =
        java.util.Collections.emptyList();
      private void ensureVariableIsMutable() {
        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
          variable_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.Variable>(variable_);
          bitField0_ |= 0x00000400;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> variableBuilder_;

      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> getVariableList() {
        if (variableBuilder_ == null) {
          return java.util.Collections.unmodifiableList(variable_);
        } else {
          return variableBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public int getVariableCount() {
        if (variableBuilder_ == null) {
          return variable_.size();
        } else {
          return variableBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index) {
        if (variableBuilder_ == null) {
          return variable_.get(index);
        } else {
          return variableBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public Builder setVariable(
          int index, org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
        if (variableBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVariableIsMutable();
          variable_.set(index, value);
          onChanged();
        } else {
          variableBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public Builder setVariable(
          int index, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          variable_.set(index, builderForValue.build());
          onChanged();
        } else {
          variableBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public Builder addVariable(org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
        if (variableBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVariableIsMutable();
          variable_.add(value);
          onChanged();
        } else {
          variableBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public Builder addVariable(
          int index, org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
        if (variableBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVariableIsMutable();
          variable_.add(index, value);
          onChanged();
        } else {
          variableBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public Builder addVariable(
          org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          variable_.add(builderForValue.build());
          onChanged();
        } else {
          variableBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public Builder addVariable(
          int index, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          variable_.add(index, builderForValue.build());
          onChanged();
        } else {
          variableBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public Builder addAllVariable(
          java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.Variable> values) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          super.addAll(values, variable_);
          onChanged();
        } else {
          variableBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public Builder clearVariable() {
        if (variableBuilder_ == null) {
          variable_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
          onChanged();
        } else {
          variableBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public Builder removeVariable(int index) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          variable_.remove(index);
          onChanged();
        } else {
          variableBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder getVariableBuilder(
          int index) {
        return getVariableFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
          int index) {
        if (variableBuilder_ == null) {
          return variable_.get(index);  } else {
          return variableBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
           getVariableOrBuilderList() {
        if (variableBuilder_ != null) {
          return variableBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(variable_);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder addVariableBuilder() {
        return getVariableFieldBuilder().addBuilder(
            org.jbpm.marshalling.impl.JBPMMessages.Variable.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder addVariableBuilder(
          int index) {
        return getVariableFieldBuilder().addBuilder(
            index, org.jbpm.marshalling.impl.JBPMMessages.Variable.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 8;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder> 
           getVariableBuilderList() {
        return getVariableFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
          getVariableFieldBuilder() {
        if (variableBuilder_ == null) {
          variableBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder>(
                  variable_,
                  ((bitField0_ & 0x00000400) == 0x00000400),
                  getParentForChildren(),
                  isClean());
          variable_ = null;
        }
        return variableBuilder_;
      }

      // repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;
      private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance> exclusiveGroup_ =
        java.util.Collections.emptyList();
      private void ensureExclusiveGroupIsMutable() {
        if (!((bitField0_ & 0x00000800) == 0x00000800)) {
          exclusiveGroup_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance>(exclusiveGroup_);
          bitField0_ |= 0x00000800;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder> exclusiveGroupBuilder_;

      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance> getExclusiveGroupList() {
        if (exclusiveGroupBuilder_ == null) {
          return java.util.Collections.unmodifiableList(exclusiveGroup_);
        } else {
          return exclusiveGroupBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public int getExclusiveGroupCount() {
        if (exclusiveGroupBuilder_ == null) {
          return exclusiveGroup_.size();
        } else {
          return exclusiveGroupBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance getExclusiveGroup(int index) {
        if (exclusiveGroupBuilder_ == null) {
          return exclusiveGroup_.get(index);
        } else {
          return exclusiveGroupBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public Builder setExclusiveGroup(
          int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance value) {
        if (exclusiveGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExclusiveGroupIsMutable();
          exclusiveGroup_.set(index, value);
          onChanged();
        } else {
          exclusiveGroupBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public Builder setExclusiveGroup(
          int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder builderForValue) {
        if (exclusiveGroupBuilder_ == null) {
          ensureExclusiveGroupIsMutable();
          exclusiveGroup_.set(index, builderForValue.build());
          onChanged();
        } else {
          exclusiveGroupBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public Builder addExclusiveGroup(org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance value) {
        if (exclusiveGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExclusiveGroupIsMutable();
          exclusiveGroup_.add(value);
          onChanged();
        } else {
          exclusiveGroupBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public Builder addExclusiveGroup(
          int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance value) {
        if (exclusiveGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExclusiveGroupIsMutable();
          exclusiveGroup_.add(index, value);
          onChanged();
        } else {
          exclusiveGroupBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public Builder addExclusiveGroup(
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder builderForValue) {
        if (exclusiveGroupBuilder_ == null) {
          ensureExclusiveGroupIsMutable();
          exclusiveGroup_.add(builderForValue.build());
          onChanged();
        } else {
          exclusiveGroupBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public Builder addExclusiveGroup(
          int index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder builderForValue) {
        if (exclusiveGroupBuilder_ == null) {
          ensureExclusiveGroupIsMutable();
          exclusiveGroup_.add(index, builderForValue.build());
          onChanged();
        } else {
          exclusiveGroupBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public Builder addAllExclusiveGroup(
          java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance> values) {
        if (exclusiveGroupBuilder_ == null) {
          ensureExclusiveGroupIsMutable();
          super.addAll(values, exclusiveGroup_);
          onChanged();
        } else {
          exclusiveGroupBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public Builder clearExclusiveGroup() {
        if (exclusiveGroupBuilder_ == null) {
          exclusiveGroup_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
        } else {
          exclusiveGroupBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public Builder removeExclusiveGroup(int index) {
        if (exclusiveGroupBuilder_ == null) {
          ensureExclusiveGroupIsMutable();
          exclusiveGroup_.remove(index);
          onChanged();
        } else {
          exclusiveGroupBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder getExclusiveGroupBuilder(
          int index) {
        return getExclusiveGroupFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder getExclusiveGroupOrBuilder(
          int index) {
        if (exclusiveGroupBuilder_ == null) {
          return exclusiveGroup_.get(index);  } else {
          return exclusiveGroupBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder> 
           getExclusiveGroupOrBuilderList() {
        if (exclusiveGroupBuilder_ != null) {
          return exclusiveGroupBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(exclusiveGroup_);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder addExclusiveGroupBuilder() {
        return getExclusiveGroupFieldBuilder().addBuilder(
            org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder addExclusiveGroupBuilder(
          int index) {
        return getExclusiveGroupFieldBuilder().addBuilder(
            index, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.ProcessInstance.ExclusiveGroupInstance exclusive_group = 10;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder> 
           getExclusiveGroupBuilderList() {
        return getExclusiveGroupFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder> 
          getExclusiveGroupFieldBuilder() {
        if (exclusiveGroupBuilder_ == null) {
          exclusiveGroupBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.ExclusiveGroupInstanceOrBuilder>(
                  exclusiveGroup_,
                  ((bitField0_ & 0x00000800) == 0x00000800),
                  getParentForChildren(),
                  isClean());
          exclusiveGroup_ = null;
        }
        return exclusiveGroupBuilder_;
      }

      // repeated string completedNodeIds = 13;
      private com.google.protobuf.LazyStringList completedNodeIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureCompletedNodeIdsIsMutable() {
        if (!((bitField0_ & 0x00001000) == 0x00001000)) {
          completedNodeIds_ = new com.google.protobuf.LazyStringArrayList(completedNodeIds_);
          bitField0_ |= 0x00001000;
         }
      }
      /**
       * <code>repeated string completedNodeIds = 13;</code>
       */
      public java.util.List<java.lang.String>
          getCompletedNodeIdsList() {
        return java.util.Collections.unmodifiableList(completedNodeIds_);
      }
      /**
       * <code>repeated string completedNodeIds = 13;</code>
       */
      public int getCompletedNodeIdsCount() {
        return completedNodeIds_.size();
      }
      /**
       * <code>repeated string completedNodeIds = 13;</code>
       */
      public java.lang.String getCompletedNodeIds(int index) {
        return completedNodeIds_.get(index);
      }
      /**
       * <code>repeated string completedNodeIds = 13;</code>
       */
      public com.google.protobuf.ByteString
          getCompletedNodeIdsBytes(int index) {
        return completedNodeIds_.getByteString(index);
      }
      /**
       * <code>repeated string completedNodeIds = 13;</code>
       */
      public Builder setCompletedNodeIds(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureCompletedNodeIdsIsMutable();
        completedNodeIds_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string completedNodeIds = 13;</code>
       */
      public Builder addCompletedNodeIds(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureCompletedNodeIdsIsMutable();
        completedNodeIds_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string completedNodeIds = 13;</code>
       */
      public Builder addAllCompletedNodeIds(
          java.lang.Iterable<java.lang.String> values) {
        ensureCompletedNodeIdsIsMutable();
        super.addAll(values, completedNodeIds_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string completedNodeIds = 13;</code>
       */
      public Builder clearCompletedNodeIds() {
        completedNodeIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00001000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string completedNodeIds = 13;</code>
       */
      public Builder addCompletedNodeIdsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureCompletedNodeIdsIsMutable();
        completedNodeIds_.add(value);
        onChanged();
        return this;
      }

      // repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;
      private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> iterationLevels_ =
        java.util.Collections.emptyList();
      private void ensureIterationLevelsIsMutable() {
        if (!((bitField0_ & 0x00002000) == 0x00002000)) {
          iterationLevels_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel>(iterationLevels_);
          bitField0_ |= 0x00002000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.IterationLevel, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder, org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> iterationLevelsBuilder_;

      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> getIterationLevelsList() {
        if (iterationLevelsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(iterationLevels_);
        } else {
          return iterationLevelsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public int getIterationLevelsCount() {
        if (iterationLevelsBuilder_ == null) {
          return iterationLevels_.size();
        } else {
          return iterationLevelsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel getIterationLevels(int index) {
        if (iterationLevelsBuilder_ == null) {
          return iterationLevels_.get(index);
        } else {
          return iterationLevelsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public Builder setIterationLevels(
          int index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel value) {
        if (iterationLevelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIterationLevelsIsMutable();
          iterationLevels_.set(index, value);
          onChanged();
        } else {
          iterationLevelsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public Builder setIterationLevels(
          int index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder builderForValue) {
        if (iterationLevelsBuilder_ == null) {
          ensureIterationLevelsIsMutable();
          iterationLevels_.set(index, builderForValue.build());
          onChanged();
        } else {
          iterationLevelsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public Builder addIterationLevels(org.jbpm.marshalling.impl.JBPMMessages.IterationLevel value) {
        if (iterationLevelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIterationLevelsIsMutable();
          iterationLevels_.add(value);
          onChanged();
        } else {
          iterationLevelsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public Builder addIterationLevels(
          int index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel value) {
        if (iterationLevelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIterationLevelsIsMutable();
          iterationLevels_.add(index, value);
          onChanged();
        } else {
          iterationLevelsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public Builder addIterationLevels(
          org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder builderForValue) {
        if (iterationLevelsBuilder_ == null) {
          ensureIterationLevelsIsMutable();
          iterationLevels_.add(builderForValue.build());
          onChanged();
        } else {
          iterationLevelsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public Builder addIterationLevels(
          int index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder builderForValue) {
        if (iterationLevelsBuilder_ == null) {
          ensureIterationLevelsIsMutable();
          iterationLevels_.add(index, builderForValue.build());
          onChanged();
        } else {
          iterationLevelsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public Builder addAllIterationLevels(
          java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.IterationLevel> values) {
        if (iterationLevelsBuilder_ == null) {
          ensureIterationLevelsIsMutable();
          super.addAll(values, iterationLevels_);
          onChanged();
        } else {
          iterationLevelsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public Builder clearIterationLevels() {
        if (iterationLevelsBuilder_ == null) {
          iterationLevels_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
          onChanged();
        } else {
          iterationLevelsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public Builder removeIterationLevels(int index) {
        if (iterationLevelsBuilder_ == null) {
          ensureIterationLevelsIsMutable();
          iterationLevels_.remove(index);
          onChanged();
        } else {
          iterationLevelsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder getIterationLevelsBuilder(
          int index) {
        return getIterationLevelsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder getIterationLevelsOrBuilder(
          int index) {
        if (iterationLevelsBuilder_ == null) {
          return iterationLevels_.get(index);  } else {
          return iterationLevelsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> 
           getIterationLevelsOrBuilderList() {
        if (iterationLevelsBuilder_ != null) {
          return iterationLevelsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(iterationLevels_);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder addIterationLevelsBuilder() {
        return getIterationLevelsFieldBuilder().addBuilder(
            org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder addIterationLevelsBuilder(
          int index) {
        return getIterationLevelsFieldBuilder().addBuilder(
            index, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.IterationLevel iterationLevels = 14;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder> 
           getIterationLevelsBuilderList() {
        return getIterationLevelsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.IterationLevel, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder, org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder> 
          getIterationLevelsFieldBuilder() {
        if (iterationLevelsBuilder_ == null) {
          iterationLevelsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.IterationLevel, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder, org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder>(
                  iterationLevels_,
                  ((bitField0_ & 0x00002000) == 0x00002000),
                  getParentForChildren(),
                  isClean());
          iterationLevels_ = null;
        }
        return iterationLevelsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessInstance)
    }

    static {
      defaultInstance = new ProcessInstance(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessInstance)
  }

  public interface VariableOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string name = 1;
    /**
     * <code>optional string name = 1;</code>
     */
    boolean hasName();
    /**
     * <code>optional string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    // optional int32 strategy_index = 2;
    /**
     * <code>optional int32 strategy_index = 2;</code>
     *
     * <pre>
     * the actual object reference
     * </pre>
     */
    boolean hasStrategyIndex();
    /**
     * <code>optional int32 strategy_index = 2;</code>
     *
     * <pre>
     * the actual object reference
     * </pre>
     */
    int getStrategyIndex();

    // optional bytes value = 3;
    /**
     * <code>optional bytes value = 3;</code>
     */
    boolean hasValue();
    /**
     * <code>optional bytes value = 3;</code>
     */
    com.google.protobuf.ByteString getValue();
  }
  /**
   * Protobuf type {@code org.jbpm.marshalling.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 16: {
              bitField0_ |= 0x00000002;
              strategyIndex_ = input.readInt32();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_Variable_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_Variable_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.jbpm.marshalling.impl.JBPMMessages.Variable.class, org.jbpm.marshalling.impl.JBPMMessages.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;
    }

    private int bitField0_;
    // optional string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private java.lang.Object name_;
    /**
     * <code>optional string name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional 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>optional 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 int32 strategy_index = 2;
    public static final int STRATEGY_INDEX_FIELD_NUMBER = 2;
    private int strategyIndex_;
    /**
     * <code>optional int32 strategy_index = 2;</code>
     *
     * <pre>
     * the actual object reference
     * </pre>
     */
    public boolean hasStrategyIndex() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 strategy_index = 2;</code>
     *
     * <pre>
     * the actual object reference
     * </pre>
     */
    public int getStrategyIndex() {
      return strategyIndex_;
    }

    // optional bytes value = 3;
    public static final int VALUE_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString value_;
    /**
     * <code>optional bytes value = 3;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional bytes value = 3;</code>
     */
    public com.google.protobuf.ByteString getValue() {
      return value_;
    }

    private void initFields() {
      name_ = "";
      strategyIndex_ = 0;
      value_ = com.google.protobuf.ByteString.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();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, strategyIndex_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(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
          .computeBytesSize(1, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, strategyIndex_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(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.jbpm.marshalling.impl.JBPMMessages.Variable parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.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.jbpm.marshalling.impl.JBPMMessages.Variable parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.Variable parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.Variable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.Variable parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.Variable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.Variable parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.Variable parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.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.jbpm.marshalling.impl.JBPMMessages.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 org.jbpm.marshalling.Variable}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_Variable_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_Variable_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.jbpm.marshalling.impl.JBPMMessages.Variable.class, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder.class);
      }

      // Construct using org.jbpm.marshalling.impl.JBPMMessages.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) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        strategyIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = 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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_Variable_descriptor;
      }

      public org.jbpm.marshalling.impl.JBPMMessages.Variable getDefaultInstanceForType() {
        return org.jbpm.marshalling.impl.JBPMMessages.Variable.getDefaultInstance();
      }

      public org.jbpm.marshalling.impl.JBPMMessages.Variable build() {
        org.jbpm.marshalling.impl.JBPMMessages.Variable result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jbpm.marshalling.impl.JBPMMessages.Variable buildPartial() {
        org.jbpm.marshalling.impl.JBPMMessages.Variable result = new org.jbpm.marshalling.impl.JBPMMessages.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.strategyIndex_ = strategyIndex_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.Variable) {
          return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.Variable)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.Variable other) {
        if (other == org.jbpm.marshalling.impl.JBPMMessages.Variable.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasStrategyIndex()) {
          setStrategyIndex(other.getStrategyIndex());
        }
        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.jbpm.marshalling.impl.JBPMMessages.Variable parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.Variable) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional string name = 1;
      private java.lang.Object name_ = "";
      /**
       * <code>optional string name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional 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>optional 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>optional 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>optional string name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>optional 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 int32 strategy_index = 2;
      private int strategyIndex_ ;
      /**
       * <code>optional int32 strategy_index = 2;</code>
       *
       * <pre>
       * the actual object reference
       * </pre>
       */
      public boolean hasStrategyIndex() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 strategy_index = 2;</code>
       *
       * <pre>
       * the actual object reference
       * </pre>
       */
      public int getStrategyIndex() {
        return strategyIndex_;
      }
      /**
       * <code>optional int32 strategy_index = 2;</code>
       *
       * <pre>
       * the actual object reference
       * </pre>
       */
      public Builder setStrategyIndex(int value) {
        bitField0_ |= 0x00000002;
        strategyIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 strategy_index = 2;</code>
       *
       * <pre>
       * the actual object reference
       * </pre>
       */
      public Builder clearStrategyIndex() {
        bitField0_ = (bitField0_ & ~0x00000002);
        strategyIndex_ = 0;
        onChanged();
        return this;
      }

      // optional bytes value = 3;
      private com.google.protobuf.ByteString value_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes value = 3;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bytes value = 3;</code>
       */
      public com.google.protobuf.ByteString getValue() {
        return value_;
      }
      /**
       * <code>optional bytes value = 3;</code>
       */
      public Builder setValue(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes value = 3;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000004);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.Variable)
    }

    static {
      defaultInstance = new Variable(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.Variable)
  }

  public interface WorkItemOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional int64 id = 1;
    /**
     * <code>optional int64 id = 1;</code>
     */
    boolean hasId();
    /**
     * <code>optional int64 id = 1;</code>
     */
    long getId();

    // optional int64 process_instances_id = 2;
    /**
     * <code>optional int64 process_instances_id = 2;</code>
     */
    boolean hasProcessInstancesId();
    /**
     * <code>optional int64 process_instances_id = 2;</code>
     */
    long getProcessInstancesId();

    // optional string name = 3;
    /**
     * <code>optional string name = 3;</code>
     */
    boolean hasName();
    /**
     * <code>optional string name = 3;</code>
     */
    java.lang.String getName();
    /**
     * <code>optional string name = 3;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    // optional int32 state = 4;
    /**
     * <code>optional int32 state = 4;</code>
     */
    boolean hasState();
    /**
     * <code>optional int32 state = 4;</code>
     */
    int getState();

    // repeated .org.jbpm.marshalling.Variable variable = 5;
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
     */
    java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> 
        getVariableList();
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index);
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
     */
    int getVariableCount();
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
     */
    java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
        getVariableOrBuilderList();
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
        int index);

    // optional string deployment_id = 6;
    /**
     * <code>optional string deployment_id = 6;</code>
     */
    boolean hasDeploymentId();
    /**
     * <code>optional string deployment_id = 6;</code>
     */
    java.lang.String getDeploymentId();
    /**
     * <code>optional string deployment_id = 6;</code>
     */
    com.google.protobuf.ByteString
        getDeploymentIdBytes();

    // optional int64 node_instance_id = 7;
    /**
     * <code>optional int64 node_instance_id = 7;</code>
     */
    boolean hasNodeInstanceId();
    /**
     * <code>optional int64 node_instance_id = 7;</code>
     */
    long getNodeInstanceId();

    // optional int64 node_id = 8;
    /**
     * <code>optional int64 node_id = 8;</code>
     */
    boolean hasNodeId();
    /**
     * <code>optional int64 node_id = 8;</code>
     */
    long getNodeId();
  }
  /**
   * Protobuf type {@code org.jbpm.marshalling.WorkItem}
   */
  public static final class WorkItem extends
      com.google.protobuf.GeneratedMessage
      implements WorkItemOrBuilder {
    // Use WorkItem.newBuilder() to construct.
    private WorkItem(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private WorkItem(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final WorkItem defaultInstance;
    public static WorkItem getDefaultInstance() {
      return defaultInstance;
    }

    public WorkItem getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private WorkItem(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        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;
              id_ = input.readInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              processInstancesId_ = input.readInt64();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              name_ = input.readBytes();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              state_ = input.readInt32();
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                variable_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.Variable>();
                mutable_bitField0_ |= 0x00000010;
              }
              variable_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.Variable.PARSER, extensionRegistry));
              break;
            }
            case 50: {
              bitField0_ |= 0x00000010;
              deploymentId_ = input.readBytes();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000020;
              nodeInstanceId_ = input.readInt64();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000040;
              nodeId_ = 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 {
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          variable_ = java.util.Collections.unmodifiableList(variable_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_WorkItem_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_WorkItem_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.jbpm.marshalling.impl.JBPMMessages.WorkItem.class, org.jbpm.marshalling.impl.JBPMMessages.WorkItem.Builder.class);
    }

    public static com.google.protobuf.Parser<WorkItem> PARSER =
        new com.google.protobuf.AbstractParser<WorkItem>() {
      public WorkItem parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new WorkItem(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<WorkItem> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // optional int64 id = 1;
    public static final int ID_FIELD_NUMBER = 1;
    private long id_;
    /**
     * <code>optional int64 id = 1;</code>
     */
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int64 id = 1;</code>
     */
    public long getId() {
      return id_;
    }

    // optional int64 process_instances_id = 2;
    public static final int PROCESS_INSTANCES_ID_FIELD_NUMBER = 2;
    private long processInstancesId_;
    /**
     * <code>optional int64 process_instances_id = 2;</code>
     */
    public boolean hasProcessInstancesId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int64 process_instances_id = 2;</code>
     */
    public long getProcessInstancesId() {
      return processInstancesId_;
    }

    // optional string name = 3;
    public static final int NAME_FIELD_NUMBER = 3;
    private java.lang.Object name_;
    /**
     * <code>optional string name = 3;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string name = 3;</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 = 3;</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 int32 state = 4;
    public static final int STATE_FIELD_NUMBER = 4;
    private int state_;
    /**
     * <code>optional int32 state = 4;</code>
     */
    public boolean hasState() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int32 state = 4;</code>
     */
    public int getState() {
      return state_;
    }

    // repeated .org.jbpm.marshalling.Variable variable = 5;
    public static final int VARIABLE_FIELD_NUMBER = 5;
    private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> variable_;
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
     */
    public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> getVariableList() {
      return variable_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
     */
    public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
        getVariableOrBuilderList() {
      return variable_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
     */
    public int getVariableCount() {
      return variable_.size();
    }
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index) {
      return variable_.get(index);
    }
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
        int index) {
      return variable_.get(index);
    }

    // optional string deployment_id = 6;
    public static final int DEPLOYMENT_ID_FIELD_NUMBER = 6;
    private java.lang.Object deploymentId_;
    /**
     * <code>optional string deployment_id = 6;</code>
     */
    public boolean hasDeploymentId() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional string deployment_id = 6;</code>
     */
    public java.lang.String getDeploymentId() {
      java.lang.Object ref = deploymentId_;
      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()) {
          deploymentId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string deployment_id = 6;</code>
     */
    public com.google.protobuf.ByteString
        getDeploymentIdBytes() {
      java.lang.Object ref = deploymentId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        deploymentId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 node_instance_id = 7;
    public static final int NODE_INSTANCE_ID_FIELD_NUMBER = 7;
    private long nodeInstanceId_;
    /**
     * <code>optional int64 node_instance_id = 7;</code>
     */
    public boolean hasNodeInstanceId() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional int64 node_instance_id = 7;</code>
     */
    public long getNodeInstanceId() {
      return nodeInstanceId_;
    }

    // optional int64 node_id = 8;
    public static final int NODE_ID_FIELD_NUMBER = 8;
    private long nodeId_;
    /**
     * <code>optional int64 node_id = 8;</code>
     */
    public boolean hasNodeId() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional int64 node_id = 8;</code>
     */
    public long getNodeId() {
      return nodeId_;
    }

    private void initFields() {
      id_ = 0L;
      processInstancesId_ = 0L;
      name_ = "";
      state_ = 0;
      variable_ = java.util.Collections.emptyList();
      deploymentId_ = "";
      nodeInstanceId_ = 0L;
      nodeId_ = 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, id_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, processInstancesId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getNameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(4, state_);
      }
      for (int i = 0; i < variable_.size(); i++) {
        output.writeMessage(5, variable_.get(i));
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(6, getDeploymentIdBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt64(7, nodeInstanceId_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeInt64(8, nodeId_);
      }
      getUnknownFields().writeTo(output);
    }

    private int 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, id_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, processInstancesId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getNameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, state_);
      }
      for (int i = 0; i < variable_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, variable_.get(i));
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, getDeploymentIdBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, nodeInstanceId_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, nodeId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.jbpm.marshalling.impl.JBPMMessages.WorkItem parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.WorkItem parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.WorkItem parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.WorkItem parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.WorkItem parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.WorkItem parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.WorkItem parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.WorkItem parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.WorkItem parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.WorkItem parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.WorkItem prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.jbpm.marshalling.WorkItem}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.jbpm.marshalling.impl.JBPMMessages.WorkItemOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_WorkItem_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_WorkItem_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.jbpm.marshalling.impl.JBPMMessages.WorkItem.class, org.jbpm.marshalling.impl.JBPMMessages.WorkItem.Builder.class);
      }

      // Construct using org.jbpm.marshalling.impl.JBPMMessages.WorkItem.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getVariableFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        id_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        processInstancesId_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        state_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        if (variableBuilder_ == null) {
          variable_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
        } else {
          variableBuilder_.clear();
        }
        deploymentId_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        nodeInstanceId_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000040);
        nodeId_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_WorkItem_descriptor;
      }

      public org.jbpm.marshalling.impl.JBPMMessages.WorkItem getDefaultInstanceForType() {
        return org.jbpm.marshalling.impl.JBPMMessages.WorkItem.getDefaultInstance();
      }

      public org.jbpm.marshalling.impl.JBPMMessages.WorkItem build() {
        org.jbpm.marshalling.impl.JBPMMessages.WorkItem result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jbpm.marshalling.impl.JBPMMessages.WorkItem buildPartial() {
        org.jbpm.marshalling.impl.JBPMMessages.WorkItem result = new org.jbpm.marshalling.impl.JBPMMessages.WorkItem(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.processInstancesId_ = processInstancesId_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.state_ = state_;
        if (variableBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            variable_ = java.util.Collections.unmodifiableList(variable_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.variable_ = variable_;
        } else {
          result.variable_ = variableBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000010;
        }
        result.deploymentId_ = deploymentId_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000020;
        }
        result.nodeInstanceId_ = nodeInstanceId_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000040;
        }
        result.nodeId_ = nodeId_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.WorkItem) {
          return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.WorkItem)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.WorkItem other) {
        if (other == org.jbpm.marshalling.impl.JBPMMessages.WorkItem.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        if (other.hasProcessInstancesId()) {
          setProcessInstancesId(other.getProcessInstancesId());
        }
        if (other.hasName()) {
          bitField0_ |= 0x00000004;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasState()) {
          setState(other.getState());
        }
        if (variableBuilder_ == null) {
          if (!other.variable_.isEmpty()) {
            if (variable_.isEmpty()) {
              variable_ = other.variable_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureVariableIsMutable();
              variable_.addAll(other.variable_);
            }
            onChanged();
          }
        } else {
          if (!other.variable_.isEmpty()) {
            if (variableBuilder_.isEmpty()) {
              variableBuilder_.dispose();
              variableBuilder_ = null;
              variable_ = other.variable_;
              bitField0_ = (bitField0_ & ~0x00000010);
              variableBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVariableFieldBuilder() : null;
            } else {
              variableBuilder_.addAllMessages(other.variable_);
            }
          }
        }
        if (other.hasDeploymentId()) {
          bitField0_ |= 0x00000020;
          deploymentId_ = other.deploymentId_;
          onChanged();
        }
        if (other.hasNodeInstanceId()) {
          setNodeInstanceId(other.getNodeInstanceId());
        }
        if (other.hasNodeId()) {
          setNodeId(other.getNodeId());
        }
        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.jbpm.marshalling.impl.JBPMMessages.WorkItem parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.WorkItem) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional int64 id = 1;
      private long id_ ;
      /**
       * <code>optional int64 id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int64 id = 1;</code>
       */
      public long getId() {
        return id_;
      }
      /**
       * <code>optional int64 id = 1;</code>
       */
      public Builder setId(long value) {
        bitField0_ |= 0x00000001;
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 id = 1;</code>
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0L;
        onChanged();
        return this;
      }

      // optional int64 process_instances_id = 2;
      private long processInstancesId_ ;
      /**
       * <code>optional int64 process_instances_id = 2;</code>
       */
      public boolean hasProcessInstancesId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int64 process_instances_id = 2;</code>
       */
      public long getProcessInstancesId() {
        return processInstancesId_;
      }
      /**
       * <code>optional int64 process_instances_id = 2;</code>
       */
      public Builder setProcessInstancesId(long value) {
        bitField0_ |= 0x00000002;
        processInstancesId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 process_instances_id = 2;</code>
       */
      public Builder clearProcessInstancesId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        processInstancesId_ = 0L;
        onChanged();
        return this;
      }

      // optional string name = 3;
      private java.lang.Object name_ = "";
      /**
       * <code>optional string name = 3;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string name = 3;</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 = 3;</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 = 3;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string name = 3;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000004);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>optional string name = 3;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        name_ = value;
        onChanged();
        return this;
      }

      // optional int32 state = 4;
      private int state_ ;
      /**
       * <code>optional int32 state = 4;</code>
       */
      public boolean hasState() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int32 state = 4;</code>
       */
      public int getState() {
        return state_;
      }
      /**
       * <code>optional int32 state = 4;</code>
       */
      public Builder setState(int value) {
        bitField0_ |= 0x00000008;
        state_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 state = 4;</code>
       */
      public Builder clearState() {
        bitField0_ = (bitField0_ & ~0x00000008);
        state_ = 0;
        onChanged();
        return this;
      }

      // repeated .org.jbpm.marshalling.Variable variable = 5;
      private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> variable_ =
        java.util.Collections.emptyList();
      private void ensureVariableIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          variable_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.Variable>(variable_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> variableBuilder_;

      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> getVariableList() {
        if (variableBuilder_ == null) {
          return java.util.Collections.unmodifiableList(variable_);
        } else {
          return variableBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public int getVariableCount() {
        if (variableBuilder_ == null) {
          return variable_.size();
        } else {
          return variableBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index) {
        if (variableBuilder_ == null) {
          return variable_.get(index);
        } else {
          return variableBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public Builder setVariable(
          int index, org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
        if (variableBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVariableIsMutable();
          variable_.set(index, value);
          onChanged();
        } else {
          variableBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public Builder setVariable(
          int index, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          variable_.set(index, builderForValue.build());
          onChanged();
        } else {
          variableBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public Builder addVariable(org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
        if (variableBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVariableIsMutable();
          variable_.add(value);
          onChanged();
        } else {
          variableBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public Builder addVariable(
          int index, org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
        if (variableBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVariableIsMutable();
          variable_.add(index, value);
          onChanged();
        } else {
          variableBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public Builder addVariable(
          org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          variable_.add(builderForValue.build());
          onChanged();
        } else {
          variableBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public Builder addVariable(
          int index, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          variable_.add(index, builderForValue.build());
          onChanged();
        } else {
          variableBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public Builder addAllVariable(
          java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.Variable> values) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          super.addAll(values, variable_);
          onChanged();
        } else {
          variableBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public Builder clearVariable() {
        if (variableBuilder_ == null) {
          variable_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          variableBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public Builder removeVariable(int index) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          variable_.remove(index);
          onChanged();
        } else {
          variableBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder getVariableBuilder(
          int index) {
        return getVariableFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
          int index) {
        if (variableBuilder_ == null) {
          return variable_.get(index);  } else {
          return variableBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
           getVariableOrBuilderList() {
        if (variableBuilder_ != null) {
          return variableBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(variable_);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder addVariableBuilder() {
        return getVariableFieldBuilder().addBuilder(
            org.jbpm.marshalling.impl.JBPMMessages.Variable.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder addVariableBuilder(
          int index) {
        return getVariableFieldBuilder().addBuilder(
            index, org.jbpm.marshalling.impl.JBPMMessages.Variable.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 5;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder> 
           getVariableBuilderList() {
        return getVariableFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
          getVariableFieldBuilder() {
        if (variableBuilder_ == null) {
          variableBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder>(
                  variable_,
                  ((bitField0_ & 0x00000010) == 0x00000010),
                  getParentForChildren(),
                  isClean());
          variable_ = null;
        }
        return variableBuilder_;
      }

      // optional string deployment_id = 6;
      private java.lang.Object deploymentId_ = "";
      /**
       * <code>optional string deployment_id = 6;</code>
       */
      public boolean hasDeploymentId() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional string deployment_id = 6;</code>
       */
      public java.lang.String getDeploymentId() {
        java.lang.Object ref = deploymentId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          deploymentId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string deployment_id = 6;</code>
       */
      public com.google.protobuf.ByteString
          getDeploymentIdBytes() {
        java.lang.Object ref = deploymentId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          deploymentId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string deployment_id = 6;</code>
       */
      public Builder setDeploymentId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        deploymentId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string deployment_id = 6;</code>
       */
      public Builder clearDeploymentId() {
        bitField0_ = (bitField0_ & ~0x00000020);
        deploymentId_ = getDefaultInstance().getDeploymentId();
        onChanged();
        return this;
      }
      /**
       * <code>optional string deployment_id = 6;</code>
       */
      public Builder setDeploymentIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        deploymentId_ = value;
        onChanged();
        return this;
      }

      // optional int64 node_instance_id = 7;
      private long nodeInstanceId_ ;
      /**
       * <code>optional int64 node_instance_id = 7;</code>
       */
      public boolean hasNodeInstanceId() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional int64 node_instance_id = 7;</code>
       */
      public long getNodeInstanceId() {
        return nodeInstanceId_;
      }
      /**
       * <code>optional int64 node_instance_id = 7;</code>
       */
      public Builder setNodeInstanceId(long value) {
        bitField0_ |= 0x00000040;
        nodeInstanceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 node_instance_id = 7;</code>
       */
      public Builder clearNodeInstanceId() {
        bitField0_ = (bitField0_ & ~0x00000040);
        nodeInstanceId_ = 0L;
        onChanged();
        return this;
      }

      // optional int64 node_id = 8;
      private long nodeId_ ;
      /**
       * <code>optional int64 node_id = 8;</code>
       */
      public boolean hasNodeId() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional int64 node_id = 8;</code>
       */
      public long getNodeId() {
        return nodeId_;
      }
      /**
       * <code>optional int64 node_id = 8;</code>
       */
      public Builder setNodeId(long value) {
        bitField0_ |= 0x00000080;
        nodeId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 node_id = 8;</code>
       */
      public Builder clearNodeId() {
        bitField0_ = (bitField0_ & ~0x00000080);
        nodeId_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.WorkItem)
    }

    static {
      defaultInstance = new WorkItem(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.WorkItem)
  }

  public interface ProcessTimerOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;
    /**
     * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
     */
    boolean hasTimer();
    /**
     * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance getTimer();
    /**
     * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstanceOrBuilder getTimerOrBuilder();

    // optional .org.drools.core.marshalling.Trigger trigger = 2;
    /**
     * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
     */
    boolean hasTrigger();
    /**
     * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
     */
    org.drools.core.marshalling.impl.ProtobufMessages.Trigger getTrigger();
    /**
     * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
     */
    org.drools.core.marshalling.impl.ProtobufMessages.TriggerOrBuilder getTriggerOrBuilder();
  }
  /**
   * Protobuf type {@code org.jbpm.marshalling.ProcessTimer}
   */
  public static final class ProcessTimer extends
      com.google.protobuf.GeneratedMessage
      implements ProcessTimerOrBuilder {
    // Use ProcessTimer.newBuilder() to construct.
    private ProcessTimer(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ProcessTimer(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ProcessTimer defaultInstance;
    public static ProcessTimer getDefaultInstance() {
      return defaultInstance;
    }

    public ProcessTimer getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ProcessTimer(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        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.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = timer_.toBuilder();
              }
              timer_ = input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(timer_);
                timer_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.drools.core.marshalling.impl.ProtobufMessages.Trigger.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = trigger_.toBuilder();
              }
              trigger_ = input.readMessage(org.drools.core.marshalling.impl.ProtobufMessages.Trigger.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(trigger_);
                trigger_ = 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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessTimer_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessTimer_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.Builder.class);
    }

    public static com.google.protobuf.Parser<ProcessTimer> PARSER =
        new com.google.protobuf.AbstractParser<ProcessTimer>() {
      public ProcessTimer parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ProcessTimer(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<ProcessTimer> getParserForType() {
      return PARSER;
    }

    public interface TimerInstanceOrBuilder
        extends com.google.protobuf.MessageOrBuilder {

      // optional int64 id = 1;
      /**
       * <code>optional int64 id = 1;</code>
       */
      boolean hasId();
      /**
       * <code>optional int64 id = 1;</code>
       */
      long getId();

      // optional int64 timer_id = 2;
      /**
       * <code>optional int64 timer_id = 2;</code>
       */
      boolean hasTimerId();
      /**
       * <code>optional int64 timer_id = 2;</code>
       */
      long getTimerId();

      // optional int64 delay = 3;
      /**
       * <code>optional int64 delay = 3;</code>
       */
      boolean hasDelay();
      /**
       * <code>optional int64 delay = 3;</code>
       */
      long getDelay();

      // optional int64 period = 4;
      /**
       * <code>optional int64 period = 4;</code>
       */
      boolean hasPeriod();
      /**
       * <code>optional int64 period = 4;</code>
       */
      long getPeriod();

      // optional int64 process_instance_id = 5;
      /**
       * <code>optional int64 process_instance_id = 5;</code>
       */
      boolean hasProcessInstanceId();
      /**
       * <code>optional int64 process_instance_id = 5;</code>
       */
      long getProcessInstanceId();

      // optional int64 activated_time = 6;
      /**
       * <code>optional int64 activated_time = 6;</code>
       */
      boolean hasActivatedTime();
      /**
       * <code>optional int64 activated_time = 6;</code>
       */
      long getActivatedTime();

      // optional int64 last_triggered = 7;
      /**
       * <code>optional int64 last_triggered = 7;</code>
       */
      boolean hasLastTriggered();
      /**
       * <code>optional int64 last_triggered = 7;</code>
       */
      long getLastTriggered();

      // optional int32 DEPRECATED_sessionId = 8;
      /**
       * <code>optional int32 DEPRECATED_sessionId = 8;</code>
       */
      boolean hasDEPRECATEDSessionId();
      /**
       * <code>optional int32 DEPRECATED_sessionId = 8;</code>
       */
      int getDEPRECATEDSessionId();

      // optional int64 sessionId = 9;
      /**
       * <code>optional int64 sessionId = 9;</code>
       */
      boolean hasSessionId();
      /**
       * <code>optional int64 sessionId = 9;</code>
       */
      long getSessionId();
    }
    /**
     * Protobuf type {@code org.jbpm.marshalling.ProcessTimer.TimerInstance}
     */
    public static final class TimerInstance extends
        com.google.protobuf.GeneratedMessage
        implements TimerInstanceOrBuilder {
      // Use TimerInstance.newBuilder() to construct.
      private TimerInstance(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private TimerInstance(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

      private static final TimerInstance defaultInstance;
      public static TimerInstance getDefaultInstance() {
        return defaultInstance;
      }

      public TimerInstance getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private TimerInstance(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          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;
                id_ = input.readInt64();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                timerId_ = input.readInt64();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                delay_ = input.readInt64();
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                period_ = input.readInt64();
                break;
              }
              case 40: {
                bitField0_ |= 0x00000010;
                processInstanceId_ = input.readInt64();
                break;
              }
              case 48: {
                bitField0_ |= 0x00000020;
                activatedTime_ = input.readInt64();
                break;
              }
              case 56: {
                bitField0_ |= 0x00000040;
                lastTriggered_ = input.readInt64();
                break;
              }
              case 64: {
                bitField0_ |= 0x00000080;
                dEPRECATEDSessionId_ = input.readInt32();
                break;
              }
              case 72: {
                bitField0_ |= 0x00000100;
                sessionId_ = 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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessTimer_TimerInstance_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessTimer_TimerInstance_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.Builder.class);
      }

      public static com.google.protobuf.Parser<TimerInstance> PARSER =
          new com.google.protobuf.AbstractParser<TimerInstance>() {
        public TimerInstance parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new TimerInstance(input, extensionRegistry);
        }
      };

      @java.lang.Override
      public com.google.protobuf.Parser<TimerInstance> getParserForType() {
        return PARSER;
      }

      private int bitField0_;
      // optional int64 id = 1;
      public static final int ID_FIELD_NUMBER = 1;
      private long id_;
      /**
       * <code>optional int64 id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int64 id = 1;</code>
       */
      public long getId() {
        return id_;
      }

      // optional int64 timer_id = 2;
      public static final int TIMER_ID_FIELD_NUMBER = 2;
      private long timerId_;
      /**
       * <code>optional int64 timer_id = 2;</code>
       */
      public boolean hasTimerId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int64 timer_id = 2;</code>
       */
      public long getTimerId() {
        return timerId_;
      }

      // optional int64 delay = 3;
      public static final int DELAY_FIELD_NUMBER = 3;
      private long delay_;
      /**
       * <code>optional int64 delay = 3;</code>
       */
      public boolean hasDelay() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int64 delay = 3;</code>
       */
      public long getDelay() {
        return delay_;
      }

      // optional int64 period = 4;
      public static final int PERIOD_FIELD_NUMBER = 4;
      private long period_;
      /**
       * <code>optional int64 period = 4;</code>
       */
      public boolean hasPeriod() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int64 period = 4;</code>
       */
      public long getPeriod() {
        return period_;
      }

      // optional int64 process_instance_id = 5;
      public static final int PROCESS_INSTANCE_ID_FIELD_NUMBER = 5;
      private long processInstanceId_;
      /**
       * <code>optional int64 process_instance_id = 5;</code>
       */
      public boolean hasProcessInstanceId() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int64 process_instance_id = 5;</code>
       */
      public long getProcessInstanceId() {
        return processInstanceId_;
      }

      // optional int64 activated_time = 6;
      public static final int ACTIVATED_TIME_FIELD_NUMBER = 6;
      private long activatedTime_;
      /**
       * <code>optional int64 activated_time = 6;</code>
       */
      public boolean hasActivatedTime() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional int64 activated_time = 6;</code>
       */
      public long getActivatedTime() {
        return activatedTime_;
      }

      // optional int64 last_triggered = 7;
      public static final int LAST_TRIGGERED_FIELD_NUMBER = 7;
      private long lastTriggered_;
      /**
       * <code>optional int64 last_triggered = 7;</code>
       */
      public boolean hasLastTriggered() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional int64 last_triggered = 7;</code>
       */
      public long getLastTriggered() {
        return lastTriggered_;
      }

      // optional int32 DEPRECATED_sessionId = 8;
      public static final int DEPRECATED_SESSIONID_FIELD_NUMBER = 8;
      private int dEPRECATEDSessionId_;
      /**
       * <code>optional int32 DEPRECATED_sessionId = 8;</code>
       */
      public boolean hasDEPRECATEDSessionId() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional int32 DEPRECATED_sessionId = 8;</code>
       */
      public int getDEPRECATEDSessionId() {
        return dEPRECATEDSessionId_;
      }

      // optional int64 sessionId = 9;
      public static final int SESSIONID_FIELD_NUMBER = 9;
      private long sessionId_;
      /**
       * <code>optional int64 sessionId = 9;</code>
       */
      public boolean hasSessionId() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional int64 sessionId = 9;</code>
       */
      public long getSessionId() {
        return sessionId_;
      }

      private void initFields() {
        id_ = 0L;
        timerId_ = 0L;
        delay_ = 0L;
        period_ = 0L;
        processInstanceId_ = 0L;
        activatedTime_ = 0L;
        lastTriggered_ = 0L;
        dEPRECATEDSessionId_ = 0;
        sessionId_ = 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, id_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt64(2, timerId_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeInt64(3, delay_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeInt64(4, period_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeInt64(5, processInstanceId_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeInt64(6, activatedTime_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeInt64(7, lastTriggered_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          output.writeInt32(8, dEPRECATEDSessionId_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          output.writeInt64(9, sessionId_);
        }
        getUnknownFields().writeTo(output);
      }

      private int 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, id_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(2, timerId_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(3, delay_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(4, period_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(5, processInstanceId_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(6, activatedTime_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(7, lastTriggered_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(8, dEPRECATEDSessionId_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(9, sessionId_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code org.jbpm.marshalling.ProcessTimer.TimerInstance}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstanceOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessTimer_TimerInstance_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessTimer_TimerInstance_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.Builder.class);
        }

        // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.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_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000001);
          timerId_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000002);
          delay_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000004);
          period_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000008);
          processInstanceId_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000010);
          activatedTime_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000020);
          lastTriggered_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000040);
          dEPRECATEDSessionId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000080);
          sessionId_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000100);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessTimer_TimerInstance_descriptor;
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance getDefaultInstanceForType() {
          return org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.getDefaultInstance();
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance build() {
          org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance buildPartial() {
          org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance(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.timerId_ = timerId_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.delay_ = delay_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.period_ = period_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.processInstanceId_ = processInstanceId_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.activatedTime_ = activatedTime_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000040;
          }
          result.lastTriggered_ = lastTriggered_;
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000080;
          }
          result.dEPRECATEDSessionId_ = dEPRECATEDSessionId_;
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000100;
          }
          result.sessionId_ = sessionId_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance) {
            return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance other) {
          if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.getDefaultInstance()) return this;
          if (other.hasId()) {
            setId(other.getId());
          }
          if (other.hasTimerId()) {
            setTimerId(other.getTimerId());
          }
          if (other.hasDelay()) {
            setDelay(other.getDelay());
          }
          if (other.hasPeriod()) {
            setPeriod(other.getPeriod());
          }
          if (other.hasProcessInstanceId()) {
            setProcessInstanceId(other.getProcessInstanceId());
          }
          if (other.hasActivatedTime()) {
            setActivatedTime(other.getActivatedTime());
          }
          if (other.hasLastTriggered()) {
            setLastTriggered(other.getLastTriggered());
          }
          if (other.hasDEPRECATEDSessionId()) {
            setDEPRECATEDSessionId(other.getDEPRECATEDSessionId());
          }
          if (other.hasSessionId()) {
            setSessionId(other.getSessionId());
          }
          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.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // optional int64 id = 1;
        private long id_ ;
        /**
         * <code>optional int64 id = 1;</code>
         */
        public boolean hasId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional int64 id = 1;</code>
         */
        public long getId() {
          return id_;
        }
        /**
         * <code>optional int64 id = 1;</code>
         */
        public Builder setId(long value) {
          bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 id = 1;</code>
         */
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = 0L;
          onChanged();
          return this;
        }

        // optional int64 timer_id = 2;
        private long timerId_ ;
        /**
         * <code>optional int64 timer_id = 2;</code>
         */
        public boolean hasTimerId() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional int64 timer_id = 2;</code>
         */
        public long getTimerId() {
          return timerId_;
        }
        /**
         * <code>optional int64 timer_id = 2;</code>
         */
        public Builder setTimerId(long value) {
          bitField0_ |= 0x00000002;
          timerId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 timer_id = 2;</code>
         */
        public Builder clearTimerId() {
          bitField0_ = (bitField0_ & ~0x00000002);
          timerId_ = 0L;
          onChanged();
          return this;
        }

        // optional int64 delay = 3;
        private long delay_ ;
        /**
         * <code>optional int64 delay = 3;</code>
         */
        public boolean hasDelay() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional int64 delay = 3;</code>
         */
        public long getDelay() {
          return delay_;
        }
        /**
         * <code>optional int64 delay = 3;</code>
         */
        public Builder setDelay(long value) {
          bitField0_ |= 0x00000004;
          delay_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 delay = 3;</code>
         */
        public Builder clearDelay() {
          bitField0_ = (bitField0_ & ~0x00000004);
          delay_ = 0L;
          onChanged();
          return this;
        }

        // optional int64 period = 4;
        private long period_ ;
        /**
         * <code>optional int64 period = 4;</code>
         */
        public boolean hasPeriod() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional int64 period = 4;</code>
         */
        public long getPeriod() {
          return period_;
        }
        /**
         * <code>optional int64 period = 4;</code>
         */
        public Builder setPeriod(long value) {
          bitField0_ |= 0x00000008;
          period_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 period = 4;</code>
         */
        public Builder clearPeriod() {
          bitField0_ = (bitField0_ & ~0x00000008);
          period_ = 0L;
          onChanged();
          return this;
        }

        // optional int64 process_instance_id = 5;
        private long processInstanceId_ ;
        /**
         * <code>optional int64 process_instance_id = 5;</code>
         */
        public boolean hasProcessInstanceId() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional int64 process_instance_id = 5;</code>
         */
        public long getProcessInstanceId() {
          return processInstanceId_;
        }
        /**
         * <code>optional int64 process_instance_id = 5;</code>
         */
        public Builder setProcessInstanceId(long value) {
          bitField0_ |= 0x00000010;
          processInstanceId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 process_instance_id = 5;</code>
         */
        public Builder clearProcessInstanceId() {
          bitField0_ = (bitField0_ & ~0x00000010);
          processInstanceId_ = 0L;
          onChanged();
          return this;
        }

        // optional int64 activated_time = 6;
        private long activatedTime_ ;
        /**
         * <code>optional int64 activated_time = 6;</code>
         */
        public boolean hasActivatedTime() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <code>optional int64 activated_time = 6;</code>
         */
        public long getActivatedTime() {
          return activatedTime_;
        }
        /**
         * <code>optional int64 activated_time = 6;</code>
         */
        public Builder setActivatedTime(long value) {
          bitField0_ |= 0x00000020;
          activatedTime_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 activated_time = 6;</code>
         */
        public Builder clearActivatedTime() {
          bitField0_ = (bitField0_ & ~0x00000020);
          activatedTime_ = 0L;
          onChanged();
          return this;
        }

        // optional int64 last_triggered = 7;
        private long lastTriggered_ ;
        /**
         * <code>optional int64 last_triggered = 7;</code>
         */
        public boolean hasLastTriggered() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * <code>optional int64 last_triggered = 7;</code>
         */
        public long getLastTriggered() {
          return lastTriggered_;
        }
        /**
         * <code>optional int64 last_triggered = 7;</code>
         */
        public Builder setLastTriggered(long value) {
          bitField0_ |= 0x00000040;
          lastTriggered_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 last_triggered = 7;</code>
         */
        public Builder clearLastTriggered() {
          bitField0_ = (bitField0_ & ~0x00000040);
          lastTriggered_ = 0L;
          onChanged();
          return this;
        }

        // optional int32 DEPRECATED_sessionId = 8;
        private int dEPRECATEDSessionId_ ;
        /**
         * <code>optional int32 DEPRECATED_sessionId = 8;</code>
         */
        public boolean hasDEPRECATEDSessionId() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * <code>optional int32 DEPRECATED_sessionId = 8;</code>
         */
        public int getDEPRECATEDSessionId() {
          return dEPRECATEDSessionId_;
        }
        /**
         * <code>optional int32 DEPRECATED_sessionId = 8;</code>
         */
        public Builder setDEPRECATEDSessionId(int value) {
          bitField0_ |= 0x00000080;
          dEPRECATEDSessionId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int32 DEPRECATED_sessionId = 8;</code>
         */
        public Builder clearDEPRECATEDSessionId() {
          bitField0_ = (bitField0_ & ~0x00000080);
          dEPRECATEDSessionId_ = 0;
          onChanged();
          return this;
        }

        // optional int64 sessionId = 9;
        private long sessionId_ ;
        /**
         * <code>optional int64 sessionId = 9;</code>
         */
        public boolean hasSessionId() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * <code>optional int64 sessionId = 9;</code>
         */
        public long getSessionId() {
          return sessionId_;
        }
        /**
         * <code>optional int64 sessionId = 9;</code>
         */
        public Builder setSessionId(long value) {
          bitField0_ |= 0x00000100;
          sessionId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 sessionId = 9;</code>
         */
        public Builder clearSessionId() {
          bitField0_ = (bitField0_ & ~0x00000100);
          sessionId_ = 0L;
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessTimer.TimerInstance)
      }

      static {
        defaultInstance = new TimerInstance(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessTimer.TimerInstance)
    }

    private int bitField0_;
    // optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;
    public static final int TIMER_FIELD_NUMBER = 1;
    private org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance timer_;
    /**
     * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
     */
    public boolean hasTimer() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance getTimer() {
      return timer_;
    }
    /**
     * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstanceOrBuilder getTimerOrBuilder() {
      return timer_;
    }

    // optional .org.drools.core.marshalling.Trigger trigger = 2;
    public static final int TRIGGER_FIELD_NUMBER = 2;
    private org.drools.core.marshalling.impl.ProtobufMessages.Trigger trigger_;
    /**
     * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
     */
    public boolean hasTrigger() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
     */
    public org.drools.core.marshalling.impl.ProtobufMessages.Trigger getTrigger() {
      return trigger_;
    }
    /**
     * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
     */
    public org.drools.core.marshalling.impl.ProtobufMessages.TriggerOrBuilder getTriggerOrBuilder() {
      return trigger_;
    }

    private void initFields() {
      timer_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.getDefaultInstance();
      trigger_ = org.drools.core.marshalling.impl.ProtobufMessages.Trigger.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, timer_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, trigger_);
      }
      getUnknownFields().writeTo(output);
    }

    private int 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, timer_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, trigger_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.jbpm.marshalling.ProcessTimer}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.jbpm.marshalling.impl.JBPMMessages.ProcessTimerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessTimer_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessTimer_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.class, org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.Builder.class);
      }

      // Construct using org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getTimerFieldBuilder();
          getTriggerFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (timerBuilder_ == null) {
          timer_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.getDefaultInstance();
        } else {
          timerBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (triggerBuilder_ == null) {
          trigger_ = org.drools.core.marshalling.impl.ProtobufMessages.Trigger.getDefaultInstance();
        } else {
          triggerBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_ProcessTimer_descriptor;
      }

      public org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer getDefaultInstanceForType() {
        return org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.getDefaultInstance();
      }

      public org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer build() {
        org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer buildPartial() {
        org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer result = new org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (timerBuilder_ == null) {
          result.timer_ = timer_;
        } else {
          result.timer_ = timerBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (triggerBuilder_ == null) {
          result.trigger_ = trigger_;
        } else {
          result.trigger_ = triggerBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer) {
          return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer other) {
        if (other == org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.getDefaultInstance()) return this;
        if (other.hasTimer()) {
          mergeTimer(other.getTimer());
        }
        if (other.hasTrigger()) {
          mergeTrigger(other.getTrigger());
        }
        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.jbpm.marshalling.impl.JBPMMessages.ProcessTimer parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;
      private org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance timer_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstanceOrBuilder> timerBuilder_;
      /**
       * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
       */
      public boolean hasTimer() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance getTimer() {
        if (timerBuilder_ == null) {
          return timer_;
        } else {
          return timerBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
       */
      public Builder setTimer(org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance value) {
        if (timerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          timer_ = value;
          onChanged();
        } else {
          timerBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
       */
      public Builder setTimer(
          org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.Builder builderForValue) {
        if (timerBuilder_ == null) {
          timer_ = builderForValue.build();
          onChanged();
        } else {
          timerBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
       */
      public Builder mergeTimer(org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance value) {
        if (timerBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              timer_ != org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.getDefaultInstance()) {
            timer_ =
              org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.newBuilder(timer_).mergeFrom(value).buildPartial();
          } else {
            timer_ = value;
          }
          onChanged();
        } else {
          timerBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
       */
      public Builder clearTimer() {
        if (timerBuilder_ == null) {
          timer_ = org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.getDefaultInstance();
          onChanged();
        } else {
          timerBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.Builder getTimerBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getTimerFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstanceOrBuilder getTimerOrBuilder() {
        if (timerBuilder_ != null) {
          return timerBuilder_.getMessageOrBuilder();
        } else {
          return timer_;
        }
      }
      /**
       * <code>optional .org.jbpm.marshalling.ProcessTimer.TimerInstance timer = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstanceOrBuilder> 
          getTimerFieldBuilder() {
        if (timerBuilder_ == null) {
          timerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance, org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstance.Builder, org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.TimerInstanceOrBuilder>(
                  timer_,
                  getParentForChildren(),
                  isClean());
          timer_ = null;
        }
        return timerBuilder_;
      }

      // optional .org.drools.core.marshalling.Trigger trigger = 2;
      private org.drools.core.marshalling.impl.ProtobufMessages.Trigger trigger_ = org.drools.core.marshalling.impl.ProtobufMessages.Trigger.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.drools.core.marshalling.impl.ProtobufMessages.Trigger, org.drools.core.marshalling.impl.ProtobufMessages.Trigger.Builder, org.drools.core.marshalling.impl.ProtobufMessages.TriggerOrBuilder> triggerBuilder_;
      /**
       * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
       */
      public boolean hasTrigger() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
       */
      public org.drools.core.marshalling.impl.ProtobufMessages.Trigger getTrigger() {
        if (triggerBuilder_ == null) {
          return trigger_;
        } else {
          return triggerBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
       */
      public Builder setTrigger(org.drools.core.marshalling.impl.ProtobufMessages.Trigger value) {
        if (triggerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          trigger_ = value;
          onChanged();
        } else {
          triggerBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
       */
      public Builder setTrigger(
          org.drools.core.marshalling.impl.ProtobufMessages.Trigger.Builder builderForValue) {
        if (triggerBuilder_ == null) {
          trigger_ = builderForValue.build();
          onChanged();
        } else {
          triggerBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
       */
      public Builder mergeTrigger(org.drools.core.marshalling.impl.ProtobufMessages.Trigger value) {
        if (triggerBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              trigger_ != org.drools.core.marshalling.impl.ProtobufMessages.Trigger.getDefaultInstance()) {
            trigger_ =
              org.drools.core.marshalling.impl.ProtobufMessages.Trigger.newBuilder(trigger_).mergeFrom(value).buildPartial();
          } else {
            trigger_ = value;
          }
          onChanged();
        } else {
          triggerBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
       */
      public Builder clearTrigger() {
        if (triggerBuilder_ == null) {
          trigger_ = org.drools.core.marshalling.impl.ProtobufMessages.Trigger.getDefaultInstance();
          onChanged();
        } else {
          triggerBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
       */
      public org.drools.core.marshalling.impl.ProtobufMessages.Trigger.Builder getTriggerBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTriggerFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
       */
      public org.drools.core.marshalling.impl.ProtobufMessages.TriggerOrBuilder getTriggerOrBuilder() {
        if (triggerBuilder_ != null) {
          return triggerBuilder_.getMessageOrBuilder();
        } else {
          return trigger_;
        }
      }
      /**
       * <code>optional .org.drools.core.marshalling.Trigger trigger = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.drools.core.marshalling.impl.ProtobufMessages.Trigger, org.drools.core.marshalling.impl.ProtobufMessages.Trigger.Builder, org.drools.core.marshalling.impl.ProtobufMessages.TriggerOrBuilder> 
          getTriggerFieldBuilder() {
        if (triggerBuilder_ == null) {
          triggerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.drools.core.marshalling.impl.ProtobufMessages.Trigger, org.drools.core.marshalling.impl.ProtobufMessages.Trigger.Builder, org.drools.core.marshalling.impl.ProtobufMessages.TriggerOrBuilder>(
                  trigger_,
                  getParentForChildren(),
                  isClean());
          trigger_ = null;
        }
        return triggerBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.ProcessTimer)
    }

    static {
      defaultInstance = new ProcessTimer(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.ProcessTimer)
  }

  public interface IterationLevelOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string id = 1;
    /**
     * <code>optional string id = 1;</code>
     */
    boolean hasId();
    /**
     * <code>optional string id = 1;</code>
     */
    java.lang.String getId();
    /**
     * <code>optional string id = 1;</code>
     */
    com.google.protobuf.ByteString
        getIdBytes();

    // optional int32 level = 2;
    /**
     * <code>optional int32 level = 2;</code>
     */
    boolean hasLevel();
    /**
     * <code>optional int32 level = 2;</code>
     */
    int getLevel();
  }
  /**
   * Protobuf type {@code org.jbpm.marshalling.IterationLevel}
   */
  public static final class IterationLevel extends
      com.google.protobuf.GeneratedMessage
      implements IterationLevelOrBuilder {
    // Use IterationLevel.newBuilder() to construct.
    private IterationLevel(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IterationLevel(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IterationLevel defaultInstance;
    public static IterationLevel getDefaultInstance() {
      return defaultInstance;
    }

    public IterationLevel getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IterationLevel(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        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;
              level_ = 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.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_IterationLevel_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_IterationLevel_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.class, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder.class);
    }

    public static com.google.protobuf.Parser<IterationLevel> PARSER =
        new com.google.protobuf.AbstractParser<IterationLevel>() {
      public IterationLevel parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IterationLevel(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<IterationLevel> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // optional string id = 1;
    public static final int ID_FIELD_NUMBER = 1;
    private java.lang.Object id_;
    /**
     * <code>optional string id = 1;</code>
     */
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional 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>optional 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 int32 level = 2;
    public static final int LEVEL_FIELD_NUMBER = 2;
    private int level_;
    /**
     * <code>optional int32 level = 2;</code>
     */
    public boolean hasLevel() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 level = 2;</code>
     */
    public int getLevel() {
      return level_;
    }

    private void initFields() {
      id_ = "";
      level_ = 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.writeBytes(1, getIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, level_);
      }
      getUnknownFields().writeTo(output);
    }

    private int 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
          .computeInt32Size(2, level_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.jbpm.marshalling.impl.JBPMMessages.IterationLevel parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.IterationLevel parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.IterationLevel parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.IterationLevel parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.IterationLevel parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.IterationLevel parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.IterationLevel parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.IterationLevel parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.IterationLevel parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.IterationLevel parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.IterationLevel prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.jbpm.marshalling.IterationLevel}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.jbpm.marshalling.impl.JBPMMessages.IterationLevelOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_IterationLevel_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_IterationLevel_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.class, org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.Builder.class);
      }

      // Construct using org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.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);
        level_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_IterationLevel_descriptor;
      }

      public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel getDefaultInstanceForType() {
        return org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.getDefaultInstance();
      }

      public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel build() {
        org.jbpm.marshalling.impl.JBPMMessages.IterationLevel result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jbpm.marshalling.impl.JBPMMessages.IterationLevel buildPartial() {
        org.jbpm.marshalling.impl.JBPMMessages.IterationLevel result = new org.jbpm.marshalling.impl.JBPMMessages.IterationLevel(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.level_ = level_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.IterationLevel) {
          return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.IterationLevel)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.IterationLevel other) {
        if (other == org.jbpm.marshalling.impl.JBPMMessages.IterationLevel.getDefaultInstance()) return this;
        if (other.hasId()) {
          bitField0_ |= 0x00000001;
          id_ = other.id_;
          onChanged();
        }
        if (other.hasLevel()) {
          setLevel(other.getLevel());
        }
        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.jbpm.marshalling.impl.JBPMMessages.IterationLevel parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.IterationLevel) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional string id = 1;
      private java.lang.Object id_ = "";
      /**
       * <code>optional string id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional 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>optional 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>optional 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>optional string id = 1;</code>
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <code>optional 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 int32 level = 2;
      private int level_ ;
      /**
       * <code>optional int32 level = 2;</code>
       */
      public boolean hasLevel() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 level = 2;</code>
       */
      public int getLevel() {
        return level_;
      }
      /**
       * <code>optional int32 level = 2;</code>
       */
      public Builder setLevel(int value) {
        bitField0_ |= 0x00000002;
        level_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 level = 2;</code>
       */
      public Builder clearLevel() {
        bitField0_ = (bitField0_ & ~0x00000002);
        level_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.IterationLevel)
    }

    static {
      defaultInstance = new IterationLevel(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.IterationLevel)
  }

  public interface VariableContainerOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .org.jbpm.marshalling.Variable variable = 1;
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
     */
    java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> 
        getVariableList();
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index);
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
     */
    int getVariableCount();
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
     */
    java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
        getVariableOrBuilderList();
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
     */
    org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code org.jbpm.marshalling.VariableContainer}
   */
  public static final class VariableContainer extends
      com.google.protobuf.GeneratedMessage
      implements VariableContainerOrBuilder {
    // Use VariableContainer.newBuilder() to construct.
    private VariableContainer(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private VariableContainer(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final VariableContainer defaultInstance;
    public static VariableContainer getDefaultInstance() {
      return defaultInstance;
    }

    public VariableContainer getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private VariableContainer(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        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)) {
                variable_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.Variable>();
                mutable_bitField0_ |= 0x00000001;
              }
              variable_.add(input.readMessage(org.jbpm.marshalling.impl.JBPMMessages.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)) {
          variable_ = java.util.Collections.unmodifiableList(variable_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_VariableContainer_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_VariableContainer_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.jbpm.marshalling.impl.JBPMMessages.VariableContainer.class, org.jbpm.marshalling.impl.JBPMMessages.VariableContainer.Builder.class);
    }

    public static com.google.protobuf.Parser<VariableContainer> PARSER =
        new com.google.protobuf.AbstractParser<VariableContainer>() {
      public VariableContainer parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new VariableContainer(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<VariableContainer> getParserForType() {
      return PARSER;
    }

    // repeated .org.jbpm.marshalling.Variable variable = 1;
    public static final int VARIABLE_FIELD_NUMBER = 1;
    private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> variable_;
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
     */
    public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> getVariableList() {
      return variable_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
     */
    public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
        getVariableOrBuilderList() {
      return variable_;
    }
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
     */
    public int getVariableCount() {
      return variable_.size();
    }
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index) {
      return variable_.get(index);
    }
    /**
     * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
     */
    public org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
        int index) {
      return variable_.get(index);
    }

    private void initFields() {
      variable_ = 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 < variable_.size(); i++) {
        output.writeMessage(1, variable_.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 < variable_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, variable_.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.jbpm.marshalling.impl.JBPMMessages.VariableContainer parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.VariableContainer parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.VariableContainer parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.VariableContainer parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.VariableContainer parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.VariableContainer parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.VariableContainer parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.VariableContainer parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.VariableContainer parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jbpm.marshalling.impl.JBPMMessages.VariableContainer parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jbpm.marshalling.impl.JBPMMessages.VariableContainer prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.jbpm.marshalling.VariableContainer}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.jbpm.marshalling.impl.JBPMMessages.VariableContainerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_VariableContainer_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_VariableContainer_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.jbpm.marshalling.impl.JBPMMessages.VariableContainer.class, org.jbpm.marshalling.impl.JBPMMessages.VariableContainer.Builder.class);
      }

      // Construct using org.jbpm.marshalling.impl.JBPMMessages.VariableContainer.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getVariableFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (variableBuilder_ == null) {
          variable_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          variableBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.jbpm.marshalling.impl.JBPMMessages.internal_static_org_jbpm_marshalling_VariableContainer_descriptor;
      }

      public org.jbpm.marshalling.impl.JBPMMessages.VariableContainer getDefaultInstanceForType() {
        return org.jbpm.marshalling.impl.JBPMMessages.VariableContainer.getDefaultInstance();
      }

      public org.jbpm.marshalling.impl.JBPMMessages.VariableContainer build() {
        org.jbpm.marshalling.impl.JBPMMessages.VariableContainer result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jbpm.marshalling.impl.JBPMMessages.VariableContainer buildPartial() {
        org.jbpm.marshalling.impl.JBPMMessages.VariableContainer result = new org.jbpm.marshalling.impl.JBPMMessages.VariableContainer(this);
        int from_bitField0_ = bitField0_;
        if (variableBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            variable_ = java.util.Collections.unmodifiableList(variable_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.variable_ = variable_;
        } else {
          result.variable_ = variableBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.jbpm.marshalling.impl.JBPMMessages.VariableContainer) {
          return mergeFrom((org.jbpm.marshalling.impl.JBPMMessages.VariableContainer)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.jbpm.marshalling.impl.JBPMMessages.VariableContainer other) {
        if (other == org.jbpm.marshalling.impl.JBPMMessages.VariableContainer.getDefaultInstance()) return this;
        if (variableBuilder_ == null) {
          if (!other.variable_.isEmpty()) {
            if (variable_.isEmpty()) {
              variable_ = other.variable_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureVariableIsMutable();
              variable_.addAll(other.variable_);
            }
            onChanged();
          }
        } else {
          if (!other.variable_.isEmpty()) {
            if (variableBuilder_.isEmpty()) {
              variableBuilder_.dispose();
              variableBuilder_ = null;
              variable_ = other.variable_;
              bitField0_ = (bitField0_ & ~0x00000001);
              variableBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVariableFieldBuilder() : null;
            } else {
              variableBuilder_.addAllMessages(other.variable_);
            }
          }
        }
        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.jbpm.marshalling.impl.JBPMMessages.VariableContainer parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jbpm.marshalling.impl.JBPMMessages.VariableContainer) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .org.jbpm.marshalling.Variable variable = 1;
      private java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> variable_ =
        java.util.Collections.emptyList();
      private void ensureVariableIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          variable_ = new java.util.ArrayList<org.jbpm.marshalling.impl.JBPMMessages.Variable>(variable_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> variableBuilder_;

      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable> getVariableList() {
        if (variableBuilder_ == null) {
          return java.util.Collections.unmodifiableList(variable_);
        } else {
          return variableBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public int getVariableCount() {
        if (variableBuilder_ == null) {
          return variable_.size();
        } else {
          return variableBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.Variable getVariable(int index) {
        if (variableBuilder_ == null) {
          return variable_.get(index);
        } else {
          return variableBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public Builder setVariable(
          int index, org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
        if (variableBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVariableIsMutable();
          variable_.set(index, value);
          onChanged();
        } else {
          variableBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public Builder setVariable(
          int index, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          variable_.set(index, builderForValue.build());
          onChanged();
        } else {
          variableBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public Builder addVariable(org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
        if (variableBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVariableIsMutable();
          variable_.add(value);
          onChanged();
        } else {
          variableBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public Builder addVariable(
          int index, org.jbpm.marshalling.impl.JBPMMessages.Variable value) {
        if (variableBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVariableIsMutable();
          variable_.add(index, value);
          onChanged();
        } else {
          variableBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public Builder addVariable(
          org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          variable_.add(builderForValue.build());
          onChanged();
        } else {
          variableBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public Builder addVariable(
          int index, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder builderForValue) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          variable_.add(index, builderForValue.build());
          onChanged();
        } else {
          variableBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public Builder addAllVariable(
          java.lang.Iterable<? extends org.jbpm.marshalling.impl.JBPMMessages.Variable> values) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          super.addAll(values, variable_);
          onChanged();
        } else {
          variableBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public Builder clearVariable() {
        if (variableBuilder_ == null) {
          variable_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          variableBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public Builder removeVariable(int index) {
        if (variableBuilder_ == null) {
          ensureVariableIsMutable();
          variable_.remove(index);
          onChanged();
        } else {
          variableBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder getVariableBuilder(
          int index) {
        return getVariableFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder getVariableOrBuilder(
          int index) {
        if (variableBuilder_ == null) {
          return variable_.get(index);  } else {
          return variableBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public java.util.List<? extends org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
           getVariableOrBuilderList() {
        if (variableBuilder_ != null) {
          return variableBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(variable_);
        }
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder addVariableBuilder() {
        return getVariableFieldBuilder().addBuilder(
            org.jbpm.marshalling.impl.JBPMMessages.Variable.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder addVariableBuilder(
          int index) {
        return getVariableFieldBuilder().addBuilder(
            index, org.jbpm.marshalling.impl.JBPMMessages.Variable.getDefaultInstance());
      }
      /**
       * <code>repeated .org.jbpm.marshalling.Variable variable = 1;</code>
       */
      public java.util.List<org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder> 
           getVariableBuilderList() {
        return getVariableFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder> 
          getVariableFieldBuilder() {
        if (variableBuilder_ == null) {
          variableBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.jbpm.marshalling.impl.JBPMMessages.Variable, org.jbpm.marshalling.impl.JBPMMessages.Variable.Builder, org.jbpm.marshalling.impl.JBPMMessages.VariableOrBuilder>(
                  variable_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          variable_ = null;
        }
        return variableBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:org.jbpm.marshalling.VariableContainer)
    }

    static {
      defaultInstance = new VariableContainer(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jbpm.marshalling.VariableContainer)
  }

  public static final int PROCESS_INSTANCE_FIELD_NUMBER = 10;
  /**
   * <code>extend .org.drools.core.marshalling.ProcessData { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      org.drools.core.marshalling.impl.ProtobufMessages.ProcessData,
      java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance>> processInstance = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.class,
        org.jbpm.marshalling.impl.JBPMMessages.ProcessInstance.getDefaultInstance());
  public static final int WORK_ITEM_FIELD_NUMBER = 11;
  /**
   * <code>extend .org.drools.core.marshalling.ProcessData { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      org.drools.core.marshalling.impl.ProtobufMessages.ProcessData,
      java.util.List<org.jbpm.marshalling.impl.JBPMMessages.WorkItem>> workItem = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        org.jbpm.marshalling.impl.JBPMMessages.WorkItem.class,
        org.jbpm.marshalling.impl.JBPMMessages.WorkItem.getDefaultInstance());
  public static final int TIMER_ID_FIELD_NUMBER = 13;
  /**
   * <code>extend .org.drools.core.marshalling.ProcessData { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      org.drools.core.marshalling.impl.ProtobufMessages.ProcessData,
      java.lang.Long> timerId = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        java.lang.Long.class,
        null);
  public static final int PROCESS_TIMER_FIELD_NUMBER = 12;
  /**
   * <code>extend .org.drools.core.marshalling.ProcessData { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      org.drools.core.marshalling.impl.ProtobufMessages.ProcessData,
      java.util.List<org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer>> processTimer = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.class,
        org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.getDefaultInstance());
  public static final int PROC_TIMER_FIELD_NUMBER = 100;
  /**
   * <code>extend .org.drools.core.marshalling.Timers.Timer { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      org.drools.core.marshalling.impl.ProtobufMessages.Timers.Timer,
      org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer> procTimer = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.class,
        org.jbpm.marshalling.impl.JBPMMessages.ProcessTimer.getDefaultInstance());
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_SwimlaneContextInstance_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_SwimlaneContextInstance_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstance_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstance_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_ExclusiveGroupInstance_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_ExclusiveGroupInstance_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_TextMapEntry_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_TextMapEntry_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_HumanTaskNode_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_HumanTaskNode_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_WorkItemNode_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_WorkItemNode_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_SubProcessNode_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_SubProcessNode_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_MilestoneNode_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_MilestoneNode_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_EventNode_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_EventNode_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_TimerNode_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_TimerNode_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_JoinTrigger_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_JoinTrigger_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_StateNode_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_StateNode_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_CompositeContextNode_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_CompositeContextNode_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_ForEachNode_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_ForEachNode_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_Variable_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_Variable_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_WorkItem_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_WorkItem_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessTimer_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessTimer_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_ProcessTimer_TimerInstance_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_ProcessTimer_TimerInstance_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_IterationLevel_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_IterationLevel_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_jbpm_marshalling_VariableContainer_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_jbpm_marshalling_VariableContainer_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\'org/jbpm/marshalling/jbpmmessages.prot" +
      "o\022\024org.jbpm.marshalling\0320org/drools/core" +
      "/marshalling/droolsmessages.proto\"\352\032\n\017Pr" +
      "ocessInstance\022\024\n\014process_type\030\001 \001(\t\022\n\n\002i" +
      "d\030\002 \001(\003\022\022\n\nprocess_id\030\003 \001(\t\022\r\n\005state\030\004 \001" +
      "(\005\022\035\n\025node_instance_counter\030\005 \001(\003\022\023\n\013pro" +
      "cess_xml\030\013 \001(\t\022\"\n\032parent_process_instanc" +
      "e_id\030\014 \001(\003\022\023\n\013description\030\017 \001(\t\022W\n\020swiml" +
      "ane_context\030\006 \003(\0132=.org.jbpm.marshalling" +
      ".ProcessInstance.SwimlaneContextInstance",
      "\022I\n\rnode_instance\030\007 \003(\01322.org.jbpm.marsh" +
      "alling.ProcessInstance.NodeInstance\0220\n\010v" +
      "ariable\030\010 \003(\0132\036.org.jbpm.marshalling.Var" +
      "iable\022U\n\017exclusive_group\030\n \003(\0132<.org.jbp" +
      "m.marshalling.ProcessInstance.ExclusiveG" +
      "roupInstance\022\030\n\020completedNodeIds\030\r \003(\t\022=" +
      "\n\017iterationLevels\030\016 \003(\0132$.org.jbpm.marsh" +
      "alling.IterationLevel\032=\n\027SwimlaneContext" +
      "Instance\022\020\n\010swimlane\030\001 \001(\t\022\020\n\010actor_id\030\002" +
      " \001(\t\032\206\001\n\014NodeInstance\022\n\n\002id\030\001 \001(\003\022\017\n\007nod",
      "e_id\030\002 \001(\003\022J\n\007content\030\004 \001(\01329.org.jbpm.m" +
      "arshalling.ProcessInstance.NodeInstanceC" +
      "ontent\022\r\n\005level\030\005 \001(\005\0328\n\026ExclusiveGroupI" +
      "nstance\022\036\n\026group_node_instance_id\030\001 \003(\003\032" +
      "\207\022\n\023NodeInstanceContent\022D\n\004type\030\001 \001(\01626." +
      "org.jbpm.marshalling.ProcessInstance.Nod" +
      "eInstanceType\022W\n\010rule_set\030\002 \001(\0132E.org.jb" +
      "pm.marshalling.ProcessInstance.NodeInsta" +
      "nceContent.RuleSetNode\022[\n\nhuman_task\030\003 \001" +
      "(\0132G.org.jbpm.marshalling.ProcessInstanc",
      "e.NodeInstanceContent.HumanTaskNode\022Y\n\tw" +
      "ork_item\030\004 \001(\0132F.org.jbpm.marshalling.Pr" +
      "ocessInstance.NodeInstanceContent.WorkIt" +
      "emNode\022]\n\013sub_process\030\005 \001(\0132H.org.jbpm.m" +
      "arshalling.ProcessInstance.NodeInstanceC" +
      "ontent.SubProcessNode\022Z\n\tmilestone\030\006 \001(\013" +
      "2G.org.jbpm.marshalling.ProcessInstance." +
      "NodeInstanceContent.MilestoneNode\022R\n\005eve" +
      "nt\030\007 \001(\0132C.org.jbpm.marshalling.ProcessI" +
      "nstance.NodeInstanceContent.EventNode\022R\n",
      "\005timer\030\010 \001(\0132C.org.jbpm.marshalling.Proc" +
      "essInstance.NodeInstanceContent.TimerNod" +
      "e\022P\n\004join\030\t \001(\0132B.org.jbpm.marshalling.P" +
      "rocessInstance.NodeInstanceContent.JoinN" +
      "ode\022R\n\005state\030\n \001(\0132C.org.jbpm.marshallin" +
      "g.ProcessInstance.NodeInstanceContent.St" +
      "ateNode\022a\n\tcomposite\030\013 \001(\0132N.org.jbpm.ma" +
      "rshalling.ProcessInstance.NodeInstanceCo" +
      "ntent.CompositeContextNode\022W\n\010for_each\030\014" +
      " \001(\0132E.org.jbpm.marshalling.ProcessInsta",
      "nce.NodeInstanceContent.ForEachNode\032\324\001\n\013" +
      "RuleSetNode\022\031\n\021timer_instance_id\030\001 \003(\003\022d" +
      "\n\010mapEntry\030\002 \003(\0132R.org.jbpm.marshalling." +
      "ProcessInstance.NodeInstanceContent.Rule" +
      "SetNode.TextMapEntry\022\027\n\017rule_flow_group\030" +
      "\003 \001(\t\032+\n\014TextMapEntry\022\014\n\004name\030\001 \001(\t\022\r\n\005v" +
      "alue\030\002 \001(\t\032@\n\rHumanTaskNode\022\024\n\014work_item" +
      "_id\030\001 \001(\003\022\031\n\021timer_instance_id\030\002 \003(\003\032?\n\014" +
      "WorkItemNode\022\024\n\014work_item_id\030\001 \001(\003\022\031\n\021ti" +
      "mer_instance_id\030\002 \003(\003\032H\n\016SubProcessNode\022",
      "\033\n\023process_instance_id\030\001 \001(\003\022\031\n\021timer_in" +
      "stance_id\030\002 \003(\003\032*\n\rMilestoneNode\022\031\n\021time" +
      "r_instance_id\030\001 \003(\003\032\013\n\tEventNode\032\035\n\tTime" +
      "rNode\022\020\n\010timer_id\030\001 \001(\003\032\234\001\n\010JoinNode\022_\n\007" +
      "trigger\030\001 \003(\0132N.org.jbpm.marshalling.Pro" +
      "cessInstance.NodeInstanceContent.JoinNod" +
      "e.JoinTrigger\032/\n\013JoinTrigger\022\017\n\007node_id\030" +
      "\001 \001(\003\022\017\n\007counter\030\002 \001(\005\032&\n\tStateNode\022\031\n\021t" +
      "imer_instance_id\030\001 \003(\003\032\304\002\n\024CompositeCont" +
      "extNode\022\031\n\021timer_instance_id\030\002 \003(\003\0220\n\010va",
      "riable\030\003 \003(\0132\036.org.jbpm.marshalling.Vari" +
      "able\022I\n\rnode_instance\030\004 \003(\01322.org.jbpm.m" +
      "arshalling.ProcessInstance.NodeInstance\022" +
      "U\n\017exclusive_group\030\005 \003(\0132<.org.jbpm.mars" +
      "halling.ProcessInstance.ExclusiveGroupIn" +
      "stance\022=\n\017iterationLevels\030\006 \003(\0132$.org.jb" +
      "pm.marshalling.IterationLevel\032\311\001\n\013ForEac" +
      "hNode\022I\n\rnode_instance\030\001 \003(\01322.org.jbpm." +
      "marshalling.ProcessInstance.NodeInstance" +
      "\0220\n\010variable\030\002 \003(\0132\036.org.jbpm.marshallin",
      "g.Variable\022=\n\017iterationLevels\030\003 \003(\0132$.or" +
      "g.jbpm.marshalling.IterationLevel\"\222\002\n\020No" +
      "deInstanceType\022\021\n\rRULE_SET_NODE\020\000\022\023\n\017HUM" +
      "AN_TASK_NODE\020\001\022\022\n\016WORK_ITEM_NODE\020\002\022\023\n\017SU" +
      "BPROCESS_NODE\020\003\022\022\n\016MILESTONE_NODE\020\004\022\016\n\nE" +
      "VENT_NODE\020\005\022\016\n\nTIMER_NODE\020\006\022\r\n\tJOIN_NODE" +
      "\020\007\022\016\n\nSTATE_NODE\020\010\022\032\n\026COMPOSITE_CONTEXT_" +
      "NODE\020\t\022\021\n\rFOR_EACH_NODE\020\n\022\020\n\014DYNAMIC_NOD" +
      "E\020\013\022\031\n\025EVENT_SUBPROCESS_NODE\020\014\"?\n\010Variab" +
      "le\022\014\n\004name\030\001 \001(\t\022\026\n\016strategy_index\030\002 \001(\005",
      "\022\r\n\005value\030\003 \001(\014\"\305\001\n\010WorkItem\022\n\n\002id\030\001 \001(\003" +
      "\022\034\n\024process_instances_id\030\002 \001(\003\022\014\n\004name\030\003" +
      " \001(\t\022\r\n\005state\030\004 \001(\005\0220\n\010variable\030\005 \003(\0132\036." +
      "org.jbpm.marshalling.Variable\022\025\n\rdeploym" +
      "ent_id\030\006 \001(\t\022\030\n\020node_instance_id\030\007 \001(\003\022\017" +
      "\n\007node_id\030\010 \001(\003\"\323\002\n\014ProcessTimer\022?\n\005time" +
      "r\030\001 \001(\01320.org.jbpm.marshalling.ProcessTi" +
      "mer.TimerInstance\0225\n\007trigger\030\002 \001(\0132$.org" +
      ".drools.core.marshalling.Trigger\032\312\001\n\rTim" +
      "erInstance\022\n\n\002id\030\001 \001(\003\022\020\n\010timer_id\030\002 \001(\003",
      "\022\r\n\005delay\030\003 \001(\003\022\016\n\006period\030\004 \001(\003\022\033\n\023proce" +
      "ss_instance_id\030\005 \001(\003\022\026\n\016activated_time\030\006" +
      " \001(\003\022\026\n\016last_triggered\030\007 \001(\003\022\034\n\024DEPRECAT" +
      "ED_sessionId\030\010 \001(\005\022\021\n\tsessionId\030\t \001(\003\"+\n" +
      "\016IterationLevel\022\n\n\002id\030\001 \001(\t\022\r\n\005level\030\002 \001" +
      "(\005\"E\n\021VariableContainer\0220\n\010variable\030\001 \003(" +
      "\0132\036.org.jbpm.marshalling.Variable:i\n\020pro" +
      "cess_instance\022(.org.drools.core.marshall" +
      "ing.ProcessData\030\n \003(\0132%.org.jbpm.marshal" +
      "ling.ProcessInstance:[\n\twork_item\022(.org.",
      "drools.core.marshalling.ProcessData\030\013 \003(" +
      "\0132\036.org.jbpm.marshalling.WorkItem::\n\010tim" +
      "er_id\022(.org.drools.core.marshalling.Proc" +
      "essData\030\r \001(\003:c\n\rprocess_timer\022(.org.dro" +
      "ols.core.marshalling.ProcessData\030\014 \003(\0132\"" +
      ".org.jbpm.marshalling.ProcessTimer:a\n\npr" +
      "oc_timer\022).org.drools.core.marshalling.T" +
      "imers.Timer\030d \001(\0132\".org.jbpm.marshalling" +
      ".ProcessTimerB)\n\031org.jbpm.marshalling.im" +
      "plB\014JBPMMessages"
    };
    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_org_jbpm_marshalling_ProcessInstance_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_org_jbpm_marshalling_ProcessInstance_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_descriptor,
              new java.lang.String[] { "ProcessType", "Id", "ProcessId", "State", "NodeInstanceCounter", "ProcessXml", "ParentProcessInstanceId", "Description", "SwimlaneContext", "NodeInstance", "Variable", "ExclusiveGroup", "CompletedNodeIds", "IterationLevels", });
          internal_static_org_jbpm_marshalling_ProcessInstance_SwimlaneContextInstance_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_descriptor.getNestedTypes().get(0);
          internal_static_org_jbpm_marshalling_ProcessInstance_SwimlaneContextInstance_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_SwimlaneContextInstance_descriptor,
              new java.lang.String[] { "Swimlane", "ActorId", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstance_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_descriptor.getNestedTypes().get(1);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstance_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstance_descriptor,
              new java.lang.String[] { "Id", "NodeId", "Content", "Level", });
          internal_static_org_jbpm_marshalling_ProcessInstance_ExclusiveGroupInstance_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_descriptor.getNestedTypes().get(2);
          internal_static_org_jbpm_marshalling_ProcessInstance_ExclusiveGroupInstance_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_ExclusiveGroupInstance_descriptor,
              new java.lang.String[] { "GroupNodeInstanceId", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_descriptor.getNestedTypes().get(3);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor,
              new java.lang.String[] { "Type", "RuleSet", "HumanTask", "WorkItem", "SubProcess", "Milestone", "Event", "Timer", "Join", "State", "Composite", "ForEach", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor.getNestedTypes().get(0);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_descriptor,
              new java.lang.String[] { "TimerInstanceId", "MapEntry", "RuleFlowGroup", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_TextMapEntry_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_descriptor.getNestedTypes().get(0);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_TextMapEntry_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_RuleSetNode_TextMapEntry_descriptor,
              new java.lang.String[] { "Name", "Value", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_HumanTaskNode_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor.getNestedTypes().get(1);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_HumanTaskNode_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_HumanTaskNode_descriptor,
              new java.lang.String[] { "WorkItemId", "TimerInstanceId", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_WorkItemNode_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor.getNestedTypes().get(2);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_WorkItemNode_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_WorkItemNode_descriptor,
              new java.lang.String[] { "WorkItemId", "TimerInstanceId", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_SubProcessNode_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor.getNestedTypes().get(3);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_SubProcessNode_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_SubProcessNode_descriptor,
              new java.lang.String[] { "ProcessInstanceId", "TimerInstanceId", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_MilestoneNode_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor.getNestedTypes().get(4);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_MilestoneNode_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_MilestoneNode_descriptor,
              new java.lang.String[] { "TimerInstanceId", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_EventNode_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor.getNestedTypes().get(5);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_EventNode_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_EventNode_descriptor,
              new java.lang.String[] { });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_TimerNode_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor.getNestedTypes().get(6);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_TimerNode_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_TimerNode_descriptor,
              new java.lang.String[] { "TimerId", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor.getNestedTypes().get(7);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_descriptor,
              new java.lang.String[] { "Trigger", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_JoinTrigger_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_descriptor.getNestedTypes().get(0);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_JoinTrigger_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_JoinNode_JoinTrigger_descriptor,
              new java.lang.String[] { "NodeId", "Counter", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_StateNode_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor.getNestedTypes().get(8);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_StateNode_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_StateNode_descriptor,
              new java.lang.String[] { "TimerInstanceId", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_CompositeContextNode_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor.getNestedTypes().get(9);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_CompositeContextNode_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_CompositeContextNode_descriptor,
              new java.lang.String[] { "TimerInstanceId", "Variable", "NodeInstance", "ExclusiveGroup", "IterationLevels", });
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_ForEachNode_descriptor =
            internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_descriptor.getNestedTypes().get(10);
          internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_ForEachNode_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessInstance_NodeInstanceContent_ForEachNode_descriptor,
              new java.lang.String[] { "NodeInstance", "Variable", "IterationLevels", });
          internal_static_org_jbpm_marshalling_Variable_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_org_jbpm_marshalling_Variable_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_Variable_descriptor,
              new java.lang.String[] { "Name", "StrategyIndex", "Value", });
          internal_static_org_jbpm_marshalling_WorkItem_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_org_jbpm_marshalling_WorkItem_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_WorkItem_descriptor,
              new java.lang.String[] { "Id", "ProcessInstancesId", "Name", "State", "Variable", "DeploymentId", "NodeInstanceId", "NodeId", });
          internal_static_org_jbpm_marshalling_ProcessTimer_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_org_jbpm_marshalling_ProcessTimer_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessTimer_descriptor,
              new java.lang.String[] { "Timer", "Trigger", });
          internal_static_org_jbpm_marshalling_ProcessTimer_TimerInstance_descriptor =
            internal_static_org_jbpm_marshalling_ProcessTimer_descriptor.getNestedTypes().get(0);
          internal_static_org_jbpm_marshalling_ProcessTimer_TimerInstance_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_ProcessTimer_TimerInstance_descriptor,
              new java.lang.String[] { "Id", "TimerId", "Delay", "Period", "ProcessInstanceId", "ActivatedTime", "LastTriggered", "DEPRECATEDSessionId", "SessionId", });
          internal_static_org_jbpm_marshalling_IterationLevel_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_org_jbpm_marshalling_IterationLevel_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_IterationLevel_descriptor,
              new java.lang.String[] { "Id", "Level", });
          internal_static_org_jbpm_marshalling_VariableContainer_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_org_jbpm_marshalling_VariableContainer_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_jbpm_marshalling_VariableContainer_descriptor,
              new java.lang.String[] { "Variable", });
          processInstance.internalInit(descriptor.getExtensions().get(0));
          workItem.internalInit(descriptor.getExtensions().get(1));
          timerId.internalInit(descriptor.getExtensions().get(2));
          processTimer.internalInit(descriptor.getExtensions().get(3));
          procTimer.internalInit(descriptor.getExtensions().get(4));
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          org.drools.core.marshalling.impl.ProtobufMessages.getDescriptor(),
        }, assigner);
  }

  // @@protoc_insertion_point(outer_class_scope)
}
