public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        main.Messages.ScenarioExecutionEndingRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (main.Messages.ScenarioExecutionEndingRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:main.ScenarioExecutionEndingRequest)
    }

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

    // @@protoc_insertion_point(class_scope:main.ScenarioExecutionEndingRequest)
  }

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

    // required string stepText = 1;
    /**
     * <code>required string stepText = 1;</code>
     */
    boolean hasStepText();
    /**
     * <code>required string stepText = 1;</code>
     */
    java.lang.String getStepText();
    /**
     * <code>required string stepText = 1;</code>
     */
    com.google.protobuf.ByteString
        getStepTextBytes();

    // optional bool scenarioFailing = 2;
    /**
     * <code>optional bool scenarioFailing = 2;</code>
     */
    boolean hasScenarioFailing();
    /**
     * <code>optional bool scenarioFailing = 2;</code>
     */
    boolean getScenarioFailing();

    // repeated .main.Argument args = 3;
    /**
     * <code>repeated .main.Argument args = 3;</code>
     */
    java.util.List<main.Messages.Argument> 
        getArgsList();
    /**
     * <code>repeated .main.Argument args = 3;</code>
     */
    main.Messages.Argument getArgs(int index);
    /**
     * <code>repeated .main.Argument args = 3;</code>
     */
    int getArgsCount();
    /**
     * <code>repeated .main.Argument args = 3;</code>
     */
    java.util.List<? extends main.Messages.ArgumentOrBuilder> 
        getArgsOrBuilderList();
    /**
     * <code>repeated .main.Argument args = 3;</code>
     */
    main.Messages.ArgumentOrBuilder getArgsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code main.ExecuteStepRequest}
   */
  public static final class ExecuteStepRequest extends
      com.google.protobuf.GeneratedMessage
      implements ExecuteStepRequestOrBuilder {
    // Use ExecuteStepRequest.newBuilder() to construct.
    private ExecuteStepRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ExecuteStepRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public ExecuteStepRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ExecuteStepRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!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;
              stepText_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              scenarioFailing_ = input.readBool();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                args_ = new java.util.ArrayList<main.Messages.Argument>();
                mutable_bitField0_ |= 0x00000004;
              }
              args_.add(input.readMessage(main.Messages.Argument.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          args_ = java.util.Collections.unmodifiableList(args_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return main.Messages.internal_static_main_ExecuteStepRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return main.Messages.internal_static_main_ExecuteStepRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              main.Messages.ExecuteStepRequest.class, main.Messages.ExecuteStepRequest.Builder.class);
    }

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

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

    private int bitField0_;
    // required string stepText = 1;
    public static final int STEPTEXT_FIELD_NUMBER = 1;
    private java.lang.Object stepText_;
    /**
     * <code>required string stepText = 1;</code>
     */
    public boolean hasStepText() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string stepText = 1;</code>
     */
    public java.lang.String getStepText() {
      java.lang.Object ref = stepText_;
      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()) {
          stepText_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string stepText = 1;</code>
     */
    public com.google.protobuf.ByteString
        getStepTextBytes() {
      java.lang.Object ref = stepText_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        stepText_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional bool scenarioFailing = 2;
    public static final int SCENARIOFAILING_FIELD_NUMBER = 2;
    private boolean scenarioFailing_;
    /**
     * <code>optional bool scenarioFailing = 2;</code>
     */
    public boolean hasScenarioFailing() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional bool scenarioFailing = 2;</code>
     */
    public boolean getScenarioFailing() {
      return scenarioFailing_;
    }

    // repeated .main.Argument args = 3;
    public static final int ARGS_FIELD_NUMBER = 3;
    private java.util.List<main.Messages.Argument> args_;
    /**
     * <code>repeated .main.Argument args = 3;</code>
     */
    public java.util.List<main.Messages.Argument> getArgsList() {
      return args_;
    }
    /**
     * <code>repeated .main.Argument args = 3;</code>
     */
    public java.util.List<? extends main.Messages.ArgumentOrBuilder> 
        getArgsOrBuilderList() {
      return args_;
    }
    /**
     * <code>repeated .main.Argument args = 3;</code>
     */
    public int getArgsCount() {
      return args_.size();
    }
    /**
     * <code>repeated .main.Argument args = 3;</code>
     */
    public main.Messages.Argument getArgs(int index) {
      return args_.get(index);
    }
    /**
     * <code>repeated .main.Argument args = 3;</code>
     */
    public main.Messages.ArgumentOrBuilder getArgsOrBuilder(
        int index) {
      return args_.get(index);
    }

    private void initFields() {
      stepText_ = "";
      scenarioFailing_ = false;
      args_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasStepText()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getArgsCount(); i++) {
        if (!getArgs(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getStepTextBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBool(2, scenarioFailing_);
      }
      for (int i = 0; i < args_.size(); i++) {
        output.writeMessage(3, args_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getStepTextBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, scenarioFailing_);
      }
      for (int i = 0; i < args_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, args_.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 main.Messages.ExecuteStepRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.ExecuteStepRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.ExecuteStepRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.ExecuteStepRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.ExecuteStepRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.ExecuteStepRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static main.Messages.ExecuteStepRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static main.Messages.ExecuteStepRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static main.Messages.ExecuteStepRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.ExecuteStepRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(main.Messages.ExecuteStepRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code main.ExecuteStepRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements main.Messages.ExecuteStepRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return main.Messages.internal_static_main_ExecuteStepRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return main.Messages.internal_static_main_ExecuteStepRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                main.Messages.ExecuteStepRequest.class, main.Messages.ExecuteStepRequest.Builder.class);
      }

      // Construct using main.Messages.ExecuteStepRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        stepText_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        scenarioFailing_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (argsBuilder_ == null) {
          args_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          argsBuilder_.clear();
        }
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return main.Messages.internal_static_main_ExecuteStepRequest_descriptor;
      }

      public main.Messages.ExecuteStepRequest getDefaultInstanceForType() {
        return main.Messages.ExecuteStepRequest.getDefaultInstance();
      }

      public main.Messages.ExecuteStepRequest build() {
        main.Messages.ExecuteStepRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public main.Messages.ExecuteStepRequest buildPartial() {
        main.Messages.ExecuteStepRequest result = new main.Messages.ExecuteStepRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.stepText_ = stepText_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.scenarioFailing_ = scenarioFailing_;
        if (argsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            args_ = java.util.Collections.unmodifiableList(args_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.args_ = args_;
        } else {
          result.args_ = argsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof main.Messages.ExecuteStepRequest) {
          return mergeFrom((main.Messages.ExecuteStepRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(main.Messages.ExecuteStepRequest other) {
        if (other == main.Messages.ExecuteStepRequest.getDefaultInstance()) return this;
        if (other.hasStepText()) {
          bitField0_ |= 0x00000001;
          stepText_ = other.stepText_;
          onChanged();
        }
        if (other.hasScenarioFailing()) {
          setScenarioFailing(other.getScenarioFailing());
        }
        if (argsBuilder_ == null) {
          if (!other.args_.isEmpty()) {
            if (args_.isEmpty()) {
              args_ = other.args_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureArgsIsMutable();
              args_.addAll(other.args_);
            }
            onChanged();
          }
        } else {
          if (!other.args_.isEmpty()) {
            if (argsBuilder_.isEmpty()) {
              argsBuilder_.dispose();
              argsBuilder_ = null;
              args_ = other.args_;
              bitField0_ = (bitField0_ & ~0x00000004);
              argsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getArgsFieldBuilder() : null;
            } else {
              argsBuilder_.addAllMessages(other.args_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasStepText()) {
          
          return false;
        }
        for (int i = 0; i < getArgsCount(); i++) {
          if (!getArgs(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        main.Messages.ExecuteStepRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (main.Messages.ExecuteStepRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string stepText = 1;
      private java.lang.Object stepText_ = "";
      /**
       * <code>required string stepText = 1;</code>
       */
      public boolean hasStepText() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string stepText = 1;</code>
       */
      public java.lang.String getStepText() {
        java.lang.Object ref = stepText_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          stepText_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string stepText = 1;</code>
       */
      public com.google.protobuf.ByteString
          getStepTextBytes() {
        java.lang.Object ref = stepText_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stepText_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string stepText = 1;</code>
       */
      public Builder setStepText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        stepText_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string stepText = 1;</code>
       */
      public Builder clearStepText() {
        bitField0_ = (bitField0_ & ~0x00000001);
        stepText_ = getDefaultInstance().getStepText();
        onChanged();
        return this;
      }
      /**
       * <code>required string stepText = 1;</code>
       */
      public Builder setStepTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        stepText_ = value;
        onChanged();
        return this;
      }

      // optional bool scenarioFailing = 2;
      private boolean scenarioFailing_ ;
      /**
       * <code>optional bool scenarioFailing = 2;</code>
       */
      public boolean hasScenarioFailing() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bool scenarioFailing = 2;</code>
       */
      public boolean getScenarioFailing() {
        return scenarioFailing_;
      }
      /**
       * <code>optional bool scenarioFailing = 2;</code>
       */
      public Builder setScenarioFailing(boolean value) {
        bitField0_ |= 0x00000002;
        scenarioFailing_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool scenarioFailing = 2;</code>
       */
      public Builder clearScenarioFailing() {
        bitField0_ = (bitField0_ & ~0x00000002);
        scenarioFailing_ = false;
        onChanged();
        return this;
      }

      // repeated .main.Argument args = 3;
      private java.util.List<main.Messages.Argument> args_ =
        java.util.Collections.emptyList();
      private void ensureArgsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          args_ = new java.util.ArrayList<main.Messages.Argument>(args_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          main.Messages.Argument, main.Messages.Argument.Builder, main.Messages.ArgumentOrBuilder> argsBuilder_;

      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public java.util.List<main.Messages.Argument> getArgsList() {
        if (argsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(args_);
        } else {
          return argsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public int getArgsCount() {
        if (argsBuilder_ == null) {
          return args_.size();
        } else {
          return argsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public main.Messages.Argument getArgs(int index) {
        if (argsBuilder_ == null) {
          return args_.get(index);
        } else {
          return argsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public Builder setArgs(
          int index, main.Messages.Argument value) {
        if (argsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgsIsMutable();
          args_.set(index, value);
          onChanged();
        } else {
          argsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public Builder setArgs(
          int index, main.Messages.Argument.Builder builderForValue) {
        if (argsBuilder_ == null) {
          ensureArgsIsMutable();
          args_.set(index, builderForValue.build());
          onChanged();
        } else {
          argsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public Builder addArgs(main.Messages.Argument value) {
        if (argsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgsIsMutable();
          args_.add(value);
          onChanged();
        } else {
          argsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public Builder addArgs(
          int index, main.Messages.Argument value) {
        if (argsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgsIsMutable();
          args_.add(index, value);
          onChanged();
        } else {
          argsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public Builder addArgs(
          main.Messages.Argument.Builder builderForValue) {
        if (argsBuilder_ == null) {
          ensureArgsIsMutable();
          args_.add(builderForValue.build());
          onChanged();
        } else {
          argsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public Builder addArgs(
          int index, main.Messages.Argument.Builder builderForValue) {
        if (argsBuilder_ == null) {
          ensureArgsIsMutable();
          args_.add(index, builderForValue.build());
          onChanged();
        } else {
          argsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public Builder addAllArgs(
          java.lang.Iterable<? extends main.Messages.Argument> values) {
        if (argsBuilder_ == null) {
          ensureArgsIsMutable();
          super.addAll(values, args_);
          onChanged();
        } else {
          argsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public Builder clearArgs() {
        if (argsBuilder_ == null) {
          args_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          argsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public Builder removeArgs(int index) {
        if (argsBuilder_ == null) {
          ensureArgsIsMutable();
          args_.remove(index);
          onChanged();
        } else {
          argsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public main.Messages.Argument.Builder getArgsBuilder(
          int index) {
        return getArgsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public main.Messages.ArgumentOrBuilder getArgsOrBuilder(
          int index) {
        if (argsBuilder_ == null) {
          return args_.get(index);  } else {
          return argsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public java.util.List<? extends main.Messages.ArgumentOrBuilder> 
           getArgsOrBuilderList() {
        if (argsBuilder_ != null) {
          return argsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(args_);
        }
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public main.Messages.Argument.Builder addArgsBuilder() {
        return getArgsFieldBuilder().addBuilder(
            main.Messages.Argument.getDefaultInstance());
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public main.Messages.Argument.Builder addArgsBuilder(
          int index) {
        return getArgsFieldBuilder().addBuilder(
            index, main.Messages.Argument.getDefaultInstance());
      }
      /**
       * <code>repeated .main.Argument args = 3;</code>
       */
      public java.util.List<main.Messages.Argument.Builder> 
           getArgsBuilderList() {
        return getArgsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          main.Messages.Argument, main.Messages.Argument.Builder, main.Messages.ArgumentOrBuilder> 
          getArgsFieldBuilder() {
        if (argsBuilder_ == null) {
          argsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              main.Messages.Argument, main.Messages.Argument.Builder, main.Messages.ArgumentOrBuilder>(
                  args_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          args_ = null;
        }
        return argsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:main.ExecuteStepRequest)
    }

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

    // @@protoc_insertion_point(class_scope:main.ExecuteStepRequest)
  }

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

    // repeated .main.TableRow rows = 1;
    /**
     * <code>repeated .main.TableRow rows = 1;</code>
     */
    java.util.List<main.Messages.TableRow> 
        getRowsList();
    /**
     * <code>repeated .main.TableRow rows = 1;</code>
     */
    main.Messages.TableRow getRows(int index);
    /**
     * <code>repeated .main.TableRow rows = 1;</code>
     */
    int getRowsCount();
    /**
     * <code>repeated .main.TableRow rows = 1;</code>
     */
    java.util.List<? extends main.Messages.TableRowOrBuilder> 
        getRowsOrBuilderList();
    /**
     * <code>repeated .main.TableRow rows = 1;</code>
     */
    main.Messages.TableRowOrBuilder getRowsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code main.ProtoTable}
   */
  public static final class ProtoTable extends
      com.google.protobuf.GeneratedMessage
      implements ProtoTableOrBuilder {
    // Use ProtoTable.newBuilder() to construct.
    private ProtoTable(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ProtoTable(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public ProtoTable getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ProtoTable(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!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)) {
                rows_ = new java.util.ArrayList<main.Messages.TableRow>();
                mutable_bitField0_ |= 0x00000001;
              }
              rows_.add(input.readMessage(main.Messages.TableRow.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)) {
          rows_ = java.util.Collections.unmodifiableList(rows_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return main.Messages.internal_static_main_ProtoTable_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return main.Messages.internal_static_main_ProtoTable_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              main.Messages.ProtoTable.class, main.Messages.ProtoTable.Builder.class);
    }

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

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

    // repeated .main.TableRow rows = 1;
    public static final int ROWS_FIELD_NUMBER = 1;
    private java.util.List<main.Messages.TableRow> rows_;
    /**
     * <code>repeated .main.TableRow rows = 1;</code>
     */
    public java.util.List<main.Messages.TableRow> getRowsList() {
      return rows_;
    }
    /**
     * <code>repeated .main.TableRow rows = 1;</code>
     */
    public java.util.List<? extends main.Messages.TableRowOrBuilder> 
        getRowsOrBuilderList() {
      return rows_;
    }
    /**
     * <code>repeated .main.TableRow rows = 1;</code>
     */
    public int getRowsCount() {
      return rows_.size();
    }
    /**
     * <code>repeated .main.TableRow rows = 1;</code>
     */
    public main.Messages.TableRow getRows(int index) {
      return rows_.get(index);
    }
    /**
     * <code>repeated .main.TableRow rows = 1;</code>
     */
    public main.Messages.TableRowOrBuilder getRowsOrBuilder(
        int index) {
      return rows_.get(index);
    }

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

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(main.Messages.ProtoTable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code main.ProtoTable}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements main.Messages.ProtoTableOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return main.Messages.internal_static_main_ProtoTable_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return main.Messages.internal_static_main_ProtoTable_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                main.Messages.ProtoTable.class, main.Messages.ProtoTable.Builder.class);
      }

      // Construct using main.Messages.ProtoTable.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return main.Messages.internal_static_main_ProtoTable_descriptor;
      }

      public main.Messages.ProtoTable getDefaultInstanceForType() {
        return main.Messages.ProtoTable.getDefaultInstance();
      }

      public main.Messages.ProtoTable build() {
        main.Messages.ProtoTable result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public main.Messages.ProtoTable buildPartial() {
        main.Messages.ProtoTable result = new main.Messages.ProtoTable(this);
        int from_bitField0_ = bitField0_;
        if (rowsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            rows_ = java.util.Collections.unmodifiableList(rows_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.rows_ = rows_;
        } else {
          result.rows_ = rowsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof main.Messages.ProtoTable) {
          return mergeFrom((main.Messages.ProtoTable)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(main.Messages.ProtoTable other) {
        if (other == main.Messages.ProtoTable.getDefaultInstance()) return this;
        if (rowsBuilder_ == null) {
          if (!other.rows_.isEmpty()) {
            if (rows_.isEmpty()) {
              rows_ = other.rows_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRowsIsMutable();
              rows_.addAll(other.rows_);
            }
            onChanged();
          }
        } else {
          if (!other.rows_.isEmpty()) {
            if (rowsBuilder_.isEmpty()) {
              rowsBuilder_.dispose();
              rowsBuilder_ = null;
              rows_ = other.rows_;
              bitField0_ = (bitField0_ & ~0x00000001);
              rowsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getRowsFieldBuilder() : null;
            } else {
              rowsBuilder_.addAllMessages(other.rows_);
            }
          }
        }
        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 {
        main.Messages.ProtoTable parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (main.Messages.ProtoTable) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .main.TableRow rows = 1;
      private java.util.List<main.Messages.TableRow> rows_ =
        java.util.Collections.emptyList();
      private void ensureRowsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          rows_ = new java.util.ArrayList<main.Messages.TableRow>(rows_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          main.Messages.TableRow, main.Messages.TableRow.Builder, main.Messages.TableRowOrBuilder> rowsBuilder_;

      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public java.util.List<main.Messages.TableRow> getRowsList() {
        if (rowsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(rows_);
        } else {
          return rowsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public int getRowsCount() {
        if (rowsBuilder_ == null) {
          return rows_.size();
        } else {
          return rowsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public main.Messages.TableRow getRows(int index) {
        if (rowsBuilder_ == null) {
          return rows_.get(index);
        } else {
          return rowsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public Builder setRows(
          int index, main.Messages.TableRow value) {
        if (rowsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRowsIsMutable();
          rows_.set(index, value);
          onChanged();
        } else {
          rowsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public Builder setRows(
          int index, main.Messages.TableRow.Builder builderForValue) {
        if (rowsBuilder_ == null) {
          ensureRowsIsMutable();
          rows_.set(index, builderForValue.build());
          onChanged();
        } else {
          rowsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public Builder addRows(main.Messages.TableRow value) {
        if (rowsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRowsIsMutable();
          rows_.add(value);
          onChanged();
        } else {
          rowsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public Builder addRows(
          int index, main.Messages.TableRow value) {
        if (rowsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRowsIsMutable();
          rows_.add(index, value);
          onChanged();
        } else {
          rowsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public Builder addRows(
          main.Messages.TableRow.Builder builderForValue) {
        if (rowsBuilder_ == null) {
          ensureRowsIsMutable();
          rows_.add(builderForValue.build());
          onChanged();
        } else {
          rowsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public Builder addRows(
          int index, main.Messages.TableRow.Builder builderForValue) {
        if (rowsBuilder_ == null) {
          ensureRowsIsMutable();
          rows_.add(index, builderForValue.build());
          onChanged();
        } else {
          rowsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public Builder addAllRows(
          java.lang.Iterable<? extends main.Messages.TableRow> values) {
        if (rowsBuilder_ == null) {
          ensureRowsIsMutable();
          super.addAll(values, rows_);
          onChanged();
        } else {
          rowsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public Builder clearRows() {
        if (rowsBuilder_ == null) {
          rows_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          rowsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public Builder removeRows(int index) {
        if (rowsBuilder_ == null) {
          ensureRowsIsMutable();
          rows_.remove(index);
          onChanged();
        } else {
          rowsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public main.Messages.TableRow.Builder getRowsBuilder(
          int index) {
        return getRowsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public main.Messages.TableRowOrBuilder getRowsOrBuilder(
          int index) {
        if (rowsBuilder_ == null) {
          return rows_.get(index);  } else {
          return rowsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public java.util.List<? extends main.Messages.TableRowOrBuilder> 
           getRowsOrBuilderList() {
        if (rowsBuilder_ != null) {
          return rowsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(rows_);
        }
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public main.Messages.TableRow.Builder addRowsBuilder() {
        return getRowsFieldBuilder().addBuilder(
            main.Messages.TableRow.getDefaultInstance());
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public main.Messages.TableRow.Builder addRowsBuilder(
          int index) {
        return getRowsFieldBuilder().addBuilder(
            index, main.Messages.TableRow.getDefaultInstance());
      }
      /**
       * <code>repeated .main.TableRow rows = 1;</code>
       */
      public java.util.List<main.Messages.TableRow.Builder> 
           getRowsBuilderList() {
        return getRowsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          main.Messages.TableRow, main.Messages.TableRow.Builder, main.Messages.TableRowOrBuilder> 
          getRowsFieldBuilder() {
        if (rowsBuilder_ == null) {
          rowsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              main.Messages.TableRow, main.Messages.TableRow.Builder, main.Messages.TableRowOrBuilder>(
                  rows_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          rows_ = null;
        }
        return rowsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:main.ProtoTable)
    }

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

    // @@protoc_insertion_point(class_scope:main.ProtoTable)
  }

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

    // repeated string cells = 1;
    /**
     * <code>repeated string cells = 1;</code>
     */
    java.util.List<java.lang.String>
    getCellsList();
    /**
     * <code>repeated string cells = 1;</code>
     */
    int getCellsCount();
    /**
     * <code>repeated string cells = 1;</code>
     */
    java.lang.String getCells(int index);
    /**
     * <code>repeated string cells = 1;</code>
     */
    com.google.protobuf.ByteString
        getCellsBytes(int index);
  }
  /**
   * Protobuf type {@code main.TableRow}
   */
  public static final class TableRow extends
      com.google.protobuf.GeneratedMessage
      implements TableRowOrBuilder {
    // Use TableRow.newBuilder() to construct.
    private TableRow(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private TableRow(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public TableRow getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private TableRow(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!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)) {
                cells_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              cells_.add(input.readBytes());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          cells_ = new com.google.protobuf.UnmodifiableLazyStringList(cells_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return main.Messages.internal_static_main_TableRow_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return main.Messages.internal_static_main_TableRow_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              main.Messages.TableRow.class, main.Messages.TableRow.Builder.class);
    }

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

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

    // repeated string cells = 1;
    public static final int CELLS_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList cells_;
    /**
     * <code>repeated string cells = 1;</code>
     */
    public java.util.List<java.lang.String>
        getCellsList() {
      return cells_;
    }
    /**
     * <code>repeated string cells = 1;</code>
     */
    public int getCellsCount() {
      return cells_.size();
    }
    /**
     * <code>repeated string cells = 1;</code>
     */
    public java.lang.String getCells(int index) {
      return cells_.get(index);
    }
    /**
     * <code>repeated string cells = 1;</code>
     */
    public com.google.protobuf.ByteString
        getCellsBytes(int index) {
      return cells_.getByteString(index);
    }

    private void initFields() {
      cells_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < cells_.size(); i++) {
        output.writeBytes(1, cells_.getByteString(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < cells_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(cells_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getCellsList().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 main.Messages.TableRow parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.TableRow parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.TableRow parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.TableRow parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.TableRow parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.TableRow parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static main.Messages.TableRow parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static main.Messages.TableRow parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static main.Messages.TableRow parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.TableRow parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(main.Messages.TableRow prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code main.TableRow}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements main.Messages.TableRowOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return main.Messages.internal_static_main_TableRow_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return main.Messages.internal_static_main_TableRow_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                main.Messages.TableRow.class, main.Messages.TableRow.Builder.class);
      }

      // Construct using main.Messages.TableRow.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();
        cells_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return main.Messages.internal_static_main_TableRow_descriptor;
      }

      public main.Messages.TableRow getDefaultInstanceForType() {
        return main.Messages.TableRow.getDefaultInstance();
      }

      public main.Messages.TableRow build() {
        main.Messages.TableRow result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public main.Messages.TableRow buildPartial() {
        main.Messages.TableRow result = new main.Messages.TableRow(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          cells_ = new com.google.protobuf.UnmodifiableLazyStringList(
              cells_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.cells_ = cells_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof main.Messages.TableRow) {
          return mergeFrom((main.Messages.TableRow)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(main.Messages.TableRow other) {
        if (other == main.Messages.TableRow.getDefaultInstance()) return this;
        if (!other.cells_.isEmpty()) {
          if (cells_.isEmpty()) {
            cells_ = other.cells_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureCellsIsMutable();
            cells_.addAll(other.cells_);
          }
          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 {
        main.Messages.TableRow parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (main.Messages.TableRow) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated string cells = 1;
      private com.google.protobuf.LazyStringList cells_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureCellsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          cells_ = new com.google.protobuf.LazyStringArrayList(cells_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string cells = 1;</code>
       */
      public java.util.List<java.lang.String>
          getCellsList() {
        return java.util.Collections.unmodifiableList(cells_);
      }
      /**
       * <code>repeated string cells = 1;</code>
       */
      public int getCellsCount() {
        return cells_.size();
      }
      /**
       * <code>repeated string cells = 1;</code>
       */
      public java.lang.String getCells(int index) {
        return cells_.get(index);
      }
      /**
       * <code>repeated string cells = 1;</code>
       */
      public com.google.protobuf.ByteString
          getCellsBytes(int index) {
        return cells_.getByteString(index);
      }
      /**
       * <code>repeated string cells = 1;</code>
       */
      public Builder setCells(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureCellsIsMutable();
        cells_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string cells = 1;</code>
       */
      public Builder addCells(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureCellsIsMutable();
        cells_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string cells = 1;</code>
       */
      public Builder addAllCells(
          java.lang.Iterable<java.lang.String> values) {
        ensureCellsIsMutable();
        super.addAll(values, cells_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string cells = 1;</code>
       */
      public Builder clearCells() {
        cells_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string cells = 1;</code>
       */
      public Builder addCellsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureCellsIsMutable();
        cells_.add(value);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:main.TableRow)
    }

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

    // @@protoc_insertion_point(class_scope:main.TableRow)
  }

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

    // required string type = 1;
    /**
     * <code>required string type = 1;</code>
     */
    boolean hasType();
    /**
     * <code>required string type = 1;</code>
     */
    java.lang.String getType();
    /**
     * <code>required string type = 1;</code>
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    // 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();

    // optional .main.ProtoTable table = 3;
    /**
     * <code>optional .main.ProtoTable table = 3;</code>
     */
    boolean hasTable();
    /**
     * <code>optional .main.ProtoTable table = 3;</code>
     */
    main.Messages.ProtoTable getTable();
    /**
     * <code>optional .main.ProtoTable table = 3;</code>
     */
    main.Messages.ProtoTableOrBuilder getTableOrBuilder();
  }
  /**
   * Protobuf type {@code main.Argument}
   */
  public static final class Argument extends
      com.google.protobuf.GeneratedMessage
      implements ArgumentOrBuilder {
    // Use Argument.newBuilder() to construct.
    private Argument(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Argument(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public Argument getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Argument(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!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;
              type_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              value_ = input.readBytes();
              break;
            }
            case 26: {
              main.Messages.ProtoTable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = table_.toBuilder();
              }
              table_ = input.readMessage(main.Messages.ProtoTable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(table_);
                table_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return main.Messages.internal_static_main_Argument_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return main.Messages.internal_static_main_Argument_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              main.Messages.Argument.class, main.Messages.Argument.Builder.class);
    }

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

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

    private int bitField0_;
    // required string type = 1;
    public static final int TYPE_FIELD_NUMBER = 1;
    private java.lang.Object type_;
    /**
     * <code>required string type = 1;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string type = 1;</code>
     */
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          type_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string type = 1;</code>
     */
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // 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;
      }
    }

    // optional .main.ProtoTable table = 3;
    public static final int TABLE_FIELD_NUMBER = 3;
    private main.Messages.ProtoTable table_;
    /**
     * <code>optional .main.ProtoTable table = 3;</code>
     */
    public boolean hasTable() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .main.ProtoTable table = 3;</code>
     */
    public main.Messages.ProtoTable getTable() {
      return table_;
    }
    /**
     * <code>optional .main.ProtoTable table = 3;</code>
     */
    public main.Messages.ProtoTableOrBuilder getTableOrBuilder() {
      return table_;
    }

    private void initFields() {
      type_ = "";
      value_ = "";
      table_ = main.Messages.ProtoTable.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getTypeBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getValueBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, table_);
      }
      getUnknownFields().writeTo(output);
    }

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

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

    public static main.Messages.Argument parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.Argument parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.Argument parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.Argument parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.Argument parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.Argument parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static main.Messages.Argument parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static main.Messages.Argument parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static main.Messages.Argument parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.Argument parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(main.Messages.Argument prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code main.Argument}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements main.Messages.ArgumentOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return main.Messages.internal_static_main_Argument_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return main.Messages.internal_static_main_Argument_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                main.Messages.Argument.class, main.Messages.Argument.Builder.class);
      }

      // Construct using main.Messages.Argument.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        type_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        if (tableBuilder_ == null) {
          table_ = main.Messages.ProtoTable.getDefaultInstance();
        } else {
          tableBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return main.Messages.internal_static_main_Argument_descriptor;
      }

      public main.Messages.Argument getDefaultInstanceForType() {
        return main.Messages.Argument.getDefaultInstance();
      }

      public main.Messages.Argument build() {
        main.Messages.Argument result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public main.Messages.Argument buildPartial() {
        main.Messages.Argument result = new main.Messages.Argument(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (tableBuilder_ == null) {
          result.table_ = table_;
        } else {
          result.table_ = tableBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof main.Messages.Argument) {
          return mergeFrom((main.Messages.Argument)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(main.Messages.Argument other) {
        if (other == main.Messages.Argument.getDefaultInstance()) return this;
        if (other.hasType()) {
          bitField0_ |= 0x00000001;
          type_ = other.type_;
          onChanged();
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000002;
          value_ = other.value_;
          onChanged();
        }
        if (other.hasTable()) {
          mergeTable(other.getTable());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasType()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        main.Messages.Argument parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (main.Messages.Argument) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string type = 1;
      private java.lang.Object type_ = "";
      /**
       * <code>required string type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string type = 1;</code>
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          type_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string type = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string type = 1;</code>
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string type = 1;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = getDefaultInstance().getType();
        onChanged();
        return this;
      }
      /**
       * <code>required string type = 1;</code>
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        type_ = 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;
      }

      // optional .main.ProtoTable table = 3;
      private main.Messages.ProtoTable table_ = main.Messages.ProtoTable.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ProtoTable, main.Messages.ProtoTable.Builder, main.Messages.ProtoTableOrBuilder> tableBuilder_;
      /**
       * <code>optional .main.ProtoTable table = 3;</code>
       */
      public boolean hasTable() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .main.ProtoTable table = 3;</code>
       */
      public main.Messages.ProtoTable getTable() {
        if (tableBuilder_ == null) {
          return table_;
        } else {
          return tableBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .main.ProtoTable table = 3;</code>
       */
      public Builder setTable(main.Messages.ProtoTable value) {
        if (tableBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          table_ = value;
          onChanged();
        } else {
          tableBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .main.ProtoTable table = 3;</code>
       */
      public Builder setTable(
          main.Messages.ProtoTable.Builder builderForValue) {
        if (tableBuilder_ == null) {
          table_ = builderForValue.build();
          onChanged();
        } else {
          tableBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .main.ProtoTable table = 3;</code>
       */
      public Builder mergeTable(main.Messages.ProtoTable value) {
        if (tableBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              table_ != main.Messages.ProtoTable.getDefaultInstance()) {
            table_ =
              main.Messages.ProtoTable.newBuilder(table_).mergeFrom(value).buildPartial();
          } else {
            table_ = value;
          }
          onChanged();
        } else {
          tableBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .main.ProtoTable table = 3;</code>
       */
      public Builder clearTable() {
        if (tableBuilder_ == null) {
          table_ = main.Messages.ProtoTable.getDefaultInstance();
          onChanged();
        } else {
          tableBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <code>optional .main.ProtoTable table = 3;</code>
       */
      public main.Messages.ProtoTable.Builder getTableBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getTableFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .main.ProtoTable table = 3;</code>
       */
      public main.Messages.ProtoTableOrBuilder getTableOrBuilder() {
        if (tableBuilder_ != null) {
          return tableBuilder_.getMessageOrBuilder();
        } else {
          return table_;
        }
      }
      /**
       * <code>optional .main.ProtoTable table = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ProtoTable, main.Messages.ProtoTable.Builder, main.Messages.ProtoTableOrBuilder> 
          getTableFieldBuilder() {
        if (tableBuilder_ == null) {
          tableBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              main.Messages.ProtoTable, main.Messages.ProtoTable.Builder, main.Messages.ProtoTableOrBuilder>(
                  table_,
                  getParentForChildren(),
                  isClean());
          table_ = null;
        }
        return tableBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:main.Argument)
    }

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

    // @@protoc_insertion_point(class_scope:main.Argument)
  }

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

    // required bool passed = 2;
    /**
     * <code>required bool passed = 2;</code>
     */
    boolean hasPassed();
    /**
     * <code>required bool passed = 2;</code>
     */
    boolean getPassed();

    // optional bool recoverableError = 3;
    /**
     * <code>optional bool recoverableError = 3;</code>
     */
    boolean hasRecoverableError();
    /**
     * <code>optional bool recoverableError = 3;</code>
     */
    boolean getRecoverableError();

    // optional string errorMessage = 4;
    /**
     * <code>optional string errorMessage = 4;</code>
     */
    boolean hasErrorMessage();
    /**
     * <code>optional string errorMessage = 4;</code>
     */
    java.lang.String getErrorMessage();
    /**
     * <code>optional string errorMessage = 4;</code>
     */
    com.google.protobuf.ByteString
        getErrorMessageBytes();

    // optional string stackTrace = 5;
    /**
     * <code>optional string stackTrace = 5;</code>
     */
    boolean hasStackTrace();
    /**
     * <code>optional string stackTrace = 5;</code>
     */
    java.lang.String getStackTrace();
    /**
     * <code>optional string stackTrace = 5;</code>
     */
    com.google.protobuf.ByteString
        getStackTraceBytes();

    // optional bytes screenShot = 6;
    /**
     * <code>optional bytes screenShot = 6;</code>
     */
    boolean hasScreenShot();
    /**
     * <code>optional bytes screenShot = 6;</code>
     */
    com.google.protobuf.ByteString getScreenShot();
  }
  /**
   * Protobuf type {@code main.ExecuteStepResponse}
   */
  public static final class ExecuteStepResponse extends
      com.google.protobuf.GeneratedMessage
      implements ExecuteStepResponseOrBuilder {
    // Use ExecuteStepResponse.newBuilder() to construct.
    private ExecuteStepResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ExecuteStepResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public ExecuteStepResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ExecuteStepResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        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: {
              bitField0_ |= 0x00000001;
              passed_ = input.readBool();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              recoverableError_ = input.readBool();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000004;
              errorMessage_ = input.readBytes();
              break;
            }
            case 42: {
              bitField0_ |= 0x00000008;
              stackTrace_ = input.readBytes();
              break;
            }
            case 50: {
              bitField0_ |= 0x00000010;
              screenShot_ = 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 main.Messages.internal_static_main_ExecuteStepResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return main.Messages.internal_static_main_ExecuteStepResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              main.Messages.ExecuteStepResponse.class, main.Messages.ExecuteStepResponse.Builder.class);
    }

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

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

    private int bitField0_;
    // required bool passed = 2;
    public static final int PASSED_FIELD_NUMBER = 2;
    private boolean passed_;
    /**
     * <code>required bool passed = 2;</code>
     */
    public boolean hasPassed() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required bool passed = 2;</code>
     */
    public boolean getPassed() {
      return passed_;
    }

    // optional bool recoverableError = 3;
    public static final int RECOVERABLEERROR_FIELD_NUMBER = 3;
    private boolean recoverableError_;
    /**
     * <code>optional bool recoverableError = 3;</code>
     */
    public boolean hasRecoverableError() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional bool recoverableError = 3;</code>
     */
    public boolean getRecoverableError() {
      return recoverableError_;
    }

    // optional string errorMessage = 4;
    public static final int ERRORMESSAGE_FIELD_NUMBER = 4;
    private java.lang.Object errorMessage_;
    /**
     * <code>optional string errorMessage = 4;</code>
     */
    public boolean hasErrorMessage() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string errorMessage = 4;</code>
     */
    public java.lang.String getErrorMessage() {
      java.lang.Object ref = errorMessage_;
      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()) {
          errorMessage_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string errorMessage = 4;</code>
     */
    public com.google.protobuf.ByteString
        getErrorMessageBytes() {
      java.lang.Object ref = errorMessage_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        errorMessage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string stackTrace = 5;
    public static final int STACKTRACE_FIELD_NUMBER = 5;
    private java.lang.Object stackTrace_;
    /**
     * <code>optional string stackTrace = 5;</code>
     */
    public boolean hasStackTrace() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional string stackTrace = 5;</code>
     */
    public java.lang.String getStackTrace() {
      java.lang.Object ref = stackTrace_;
      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()) {
          stackTrace_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string stackTrace = 5;</code>
     */
    public com.google.protobuf.ByteString
        getStackTraceBytes() {
      java.lang.Object ref = stackTrace_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        stackTrace_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional bytes screenShot = 6;
    public static final int SCREENSHOT_FIELD_NUMBER = 6;
    private com.google.protobuf.ByteString screenShot_;
    /**
     * <code>optional bytes screenShot = 6;</code>
     */
    public boolean hasScreenShot() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional bytes screenShot = 6;</code>
     */
    public com.google.protobuf.ByteString getScreenShot() {
      return screenShot_;
    }

    private void initFields() {
      passed_ = false;
      recoverableError_ = false;
      errorMessage_ = "";
      stackTrace_ = "";
      screenShot_ = com.google.protobuf.ByteString.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasPassed()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBool(2, passed_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBool(3, recoverableError_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(4, getErrorMessageBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(5, getStackTraceBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(6, screenShot_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, passed_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, recoverableError_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getErrorMessageBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, getStackTraceBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, screenShot_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

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

    public static main.Messages.ExecuteStepResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.ExecuteStepResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.ExecuteStepResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.ExecuteStepResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.ExecuteStepResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.ExecuteStepResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static main.Messages.ExecuteStepResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static main.Messages.ExecuteStepResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static main.Messages.ExecuteStepResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.ExecuteStepResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(main.Messages.ExecuteStepResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code main.ExecuteStepResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements main.Messages.ExecuteStepResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return main.Messages.internal_static_main_ExecuteStepResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return main.Messages.internal_static_main_ExecuteStepResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                main.Messages.ExecuteStepResponse.class, main.Messages.ExecuteStepResponse.Builder.class);
      }

      // Construct using main.Messages.ExecuteStepResponse.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();
        passed_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        recoverableError_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        errorMessage_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        stackTrace_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        screenShot_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return main.Messages.internal_static_main_ExecuteStepResponse_descriptor;
      }

      public main.Messages.ExecuteStepResponse getDefaultInstanceForType() {
        return main.Messages.ExecuteStepResponse.getDefaultInstance();
      }

      public main.Messages.ExecuteStepResponse build() {
        main.Messages.ExecuteStepResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public main.Messages.ExecuteStepResponse buildPartial() {
        main.Messages.ExecuteStepResponse result = new main.Messages.ExecuteStepResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.passed_ = passed_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.recoverableError_ = recoverableError_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.errorMessage_ = errorMessage_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.stackTrace_ = stackTrace_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.screenShot_ = screenShot_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof main.Messages.ExecuteStepResponse) {
          return mergeFrom((main.Messages.ExecuteStepResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(main.Messages.ExecuteStepResponse other) {
        if (other == main.Messages.ExecuteStepResponse.getDefaultInstance()) return this;
        if (other.hasPassed()) {
          setPassed(other.getPassed());
        }
        if (other.hasRecoverableError()) {
          setRecoverableError(other.getRecoverableError());
        }
        if (other.hasErrorMessage()) {
          bitField0_ |= 0x00000004;
          errorMessage_ = other.errorMessage_;
          onChanged();
        }
        if (other.hasStackTrace()) {
          bitField0_ |= 0x00000008;
          stackTrace_ = other.stackTrace_;
          onChanged();
        }
        if (other.hasScreenShot()) {
          setScreenShot(other.getScreenShot());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasPassed()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        main.Messages.ExecuteStepResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (main.Messages.ExecuteStepResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required bool passed = 2;
      private boolean passed_ ;
      /**
       * <code>required bool passed = 2;</code>
       */
      public boolean hasPassed() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required bool passed = 2;</code>
       */
      public boolean getPassed() {
        return passed_;
      }
      /**
       * <code>required bool passed = 2;</code>
       */
      public Builder setPassed(boolean value) {
        bitField0_ |= 0x00000001;
        passed_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bool passed = 2;</code>
       */
      public Builder clearPassed() {
        bitField0_ = (bitField0_ & ~0x00000001);
        passed_ = false;
        onChanged();
        return this;
      }

      // optional bool recoverableError = 3;
      private boolean recoverableError_ ;
      /**
       * <code>optional bool recoverableError = 3;</code>
       */
      public boolean hasRecoverableError() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bool recoverableError = 3;</code>
       */
      public boolean getRecoverableError() {
        return recoverableError_;
      }
      /**
       * <code>optional bool recoverableError = 3;</code>
       */
      public Builder setRecoverableError(boolean value) {
        bitField0_ |= 0x00000002;
        recoverableError_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool recoverableError = 3;</code>
       */
      public Builder clearRecoverableError() {
        bitField0_ = (bitField0_ & ~0x00000002);
        recoverableError_ = false;
        onChanged();
        return this;
      }

      // optional string errorMessage = 4;
      private java.lang.Object errorMessage_ = "";
      /**
       * <code>optional string errorMessage = 4;</code>
       */
      public boolean hasErrorMessage() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string errorMessage = 4;</code>
       */
      public java.lang.String getErrorMessage() {
        java.lang.Object ref = errorMessage_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          errorMessage_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string errorMessage = 4;</code>
       */
      public com.google.protobuf.ByteString
          getErrorMessageBytes() {
        java.lang.Object ref = errorMessage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          errorMessage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string errorMessage = 4;</code>
       */
      public Builder setErrorMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        errorMessage_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string errorMessage = 4;</code>
       */
      public Builder clearErrorMessage() {
        bitField0_ = (bitField0_ & ~0x00000004);
        errorMessage_ = getDefaultInstance().getErrorMessage();
        onChanged();
        return this;
      }
      /**
       * <code>optional string errorMessage = 4;</code>
       */
      public Builder setErrorMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        errorMessage_ = value;
        onChanged();
        return this;
      }

      // optional string stackTrace = 5;
      private java.lang.Object stackTrace_ = "";
      /**
       * <code>optional string stackTrace = 5;</code>
       */
      public boolean hasStackTrace() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string stackTrace = 5;</code>
       */
      public java.lang.String getStackTrace() {
        java.lang.Object ref = stackTrace_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          stackTrace_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string stackTrace = 5;</code>
       */
      public com.google.protobuf.ByteString
          getStackTraceBytes() {
        java.lang.Object ref = stackTrace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stackTrace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string stackTrace = 5;</code>
       */
      public Builder setStackTrace(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        stackTrace_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string stackTrace = 5;</code>
       */
      public Builder clearStackTrace() {
        bitField0_ = (bitField0_ & ~0x00000008);
        stackTrace_ = getDefaultInstance().getStackTrace();
        onChanged();
        return this;
      }
      /**
       * <code>optional string stackTrace = 5;</code>
       */
      public Builder setStackTraceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        stackTrace_ = value;
        onChanged();
        return this;
      }

      // optional bytes screenShot = 6;
      private com.google.protobuf.ByteString screenShot_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes screenShot = 6;</code>
       */
      public boolean hasScreenShot() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional bytes screenShot = 6;</code>
       */
      public com.google.protobuf.ByteString getScreenShot() {
        return screenShot_;
      }
      /**
       * <code>optional bytes screenShot = 6;</code>
       */
      public Builder setScreenShot(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        screenShot_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes screenShot = 6;</code>
       */
      public Builder clearScreenShot() {
        bitField0_ = (bitField0_ & ~0x00000010);
        screenShot_ = getDefaultInstance().getScreenShot();
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:main.ExecuteStepResponse)
    }

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

    // @@protoc_insertion_point(class_scope:main.ExecuteStepResponse)
  }

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

    // required string stepText = 1;
    /**
     * <code>required string stepText = 1;</code>
     */
    boolean hasStepText();
    /**
     * <code>required string stepText = 1;</code>
     */
    java.lang.String getStepText();
    /**
     * <code>required string stepText = 1;</code>
     */
    com.google.protobuf.ByteString
        getStepTextBytes();
  }
  /**
   * Protobuf type {@code main.StepValidateRequest}
   */
  public static final class StepValidateRequest extends
      com.google.protobuf.GeneratedMessage
      implements StepValidateRequestOrBuilder {
    // Use StepValidateRequest.newBuilder() to construct.
    private StepValidateRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private StepValidateRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public StepValidateRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private StepValidateRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!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;
              stepText_ = 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 main.Messages.internal_static_main_StepValidateRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return main.Messages.internal_static_main_StepValidateRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              main.Messages.StepValidateRequest.class, main.Messages.StepValidateRequest.Builder.class);
    }

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

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

    private int bitField0_;
    // required string stepText = 1;
    public static final int STEPTEXT_FIELD_NUMBER = 1;
    private java.lang.Object stepText_;
    /**
     * <code>required string stepText = 1;</code>
     */
    public boolean hasStepText() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string stepText = 1;</code>
     */
    public java.lang.String getStepText() {
      java.lang.Object ref = stepText_;
      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()) {
          stepText_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string stepText = 1;</code>
     */
    public com.google.protobuf.ByteString
        getStepTextBytes() {
      java.lang.Object ref = stepText_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        stepText_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      stepText_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasStepText()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getStepTextBytes());
      }
      getUnknownFields().writeTo(output);
    }

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

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

    public static main.Messages.StepValidateRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.StepValidateRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.StepValidateRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.StepValidateRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.StepValidateRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.StepValidateRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static main.Messages.StepValidateRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static main.Messages.StepValidateRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static main.Messages.StepValidateRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.StepValidateRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(main.Messages.StepValidateRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code main.StepValidateRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements main.Messages.StepValidateRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return main.Messages.internal_static_main_StepValidateRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return main.Messages.internal_static_main_StepValidateRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                main.Messages.StepValidateRequest.class, main.Messages.StepValidateRequest.Builder.class);
      }

      // Construct using main.Messages.StepValidateRequest.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();
        stepText_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return main.Messages.internal_static_main_StepValidateRequest_descriptor;
      }

      public main.Messages.StepValidateRequest getDefaultInstanceForType() {
        return main.Messages.StepValidateRequest.getDefaultInstance();
      }

      public main.Messages.StepValidateRequest build() {
        main.Messages.StepValidateRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public main.Messages.StepValidateRequest buildPartial() {
        main.Messages.StepValidateRequest result = new main.Messages.StepValidateRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.stepText_ = stepText_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof main.Messages.StepValidateRequest) {
          return mergeFrom((main.Messages.StepValidateRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(main.Messages.StepValidateRequest other) {
        if (other == main.Messages.StepValidateRequest.getDefaultInstance()) return this;
        if (other.hasStepText()) {
          bitField0_ |= 0x00000001;
          stepText_ = other.stepText_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasStepText()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        main.Messages.StepValidateRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (main.Messages.StepValidateRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string stepText = 1;
      private java.lang.Object stepText_ = "";
      /**
       * <code>required string stepText = 1;</code>
       */
      public boolean hasStepText() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string stepText = 1;</code>
       */
      public java.lang.String getStepText() {
        java.lang.Object ref = stepText_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          stepText_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string stepText = 1;</code>
       */
      public com.google.protobuf.ByteString
          getStepTextBytes() {
        java.lang.Object ref = stepText_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stepText_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string stepText = 1;</code>
       */
      public Builder setStepText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        stepText_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string stepText = 1;</code>
       */
      public Builder clearStepText() {
        bitField0_ = (bitField0_ & ~0x00000001);
        stepText_ = getDefaultInstance().getStepText();
        onChanged();
        return this;
      }
      /**
       * <code>required string stepText = 1;</code>
       */
      public Builder setStepTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        stepText_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:main.StepValidateRequest)
    }

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

    // @@protoc_insertion_point(class_scope:main.StepValidateRequest)
  }

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

    // required bool isValid = 1;
    /**
     * <code>required bool isValid = 1;</code>
     */
    boolean hasIsValid();
    /**
     * <code>required bool isValid = 1;</code>
     */
    boolean getIsValid();
  }
  /**
   * Protobuf type {@code main.StepValidateResponse}
   */
  public static final class StepValidateResponse extends
      com.google.protobuf.GeneratedMessage
      implements StepValidateResponseOrBuilder {
    // Use StepValidateResponse.newBuilder() to construct.
    private StepValidateResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private StepValidateResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public StepValidateResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private StepValidateResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        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;
              isValid_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return main.Messages.internal_static_main_StepValidateResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return main.Messages.internal_static_main_StepValidateResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              main.Messages.StepValidateResponse.class, main.Messages.StepValidateResponse.Builder.class);
    }

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

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

    private int bitField0_;
    // required bool isValid = 1;
    public static final int ISVALID_FIELD_NUMBER = 1;
    private boolean isValid_;
    /**
     * <code>required bool isValid = 1;</code>
     */
    public boolean hasIsValid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required bool isValid = 1;</code>
     */
    public boolean getIsValid() {
      return isValid_;
    }

    private void initFields() {
      isValid_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasIsValid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBool(1, isValid_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, isValid_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

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

    public static main.Messages.StepValidateResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.StepValidateResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.StepValidateResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.StepValidateResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.StepValidateResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.StepValidateResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static main.Messages.StepValidateResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static main.Messages.StepValidateResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static main.Messages.StepValidateResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.StepValidateResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(main.Messages.StepValidateResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code main.StepValidateResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements main.Messages.StepValidateResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return main.Messages.internal_static_main_StepValidateResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return main.Messages.internal_static_main_StepValidateResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                main.Messages.StepValidateResponse.class, main.Messages.StepValidateResponse.Builder.class);
      }

      // Construct using main.Messages.StepValidateResponse.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();
        isValid_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return main.Messages.internal_static_main_StepValidateResponse_descriptor;
      }

      public main.Messages.StepValidateResponse getDefaultInstanceForType() {
        return main.Messages.StepValidateResponse.getDefaultInstance();
      }

      public main.Messages.StepValidateResponse build() {
        main.Messages.StepValidateResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public main.Messages.StepValidateResponse buildPartial() {
        main.Messages.StepValidateResponse result = new main.Messages.StepValidateResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.isValid_ = isValid_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof main.Messages.StepValidateResponse) {
          return mergeFrom((main.Messages.StepValidateResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(main.Messages.StepValidateResponse other) {
        if (other == main.Messages.StepValidateResponse.getDefaultInstance()) return this;
        if (other.hasIsValid()) {
          setIsValid(other.getIsValid());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIsValid()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        main.Messages.StepValidateResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (main.Messages.StepValidateResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required bool isValid = 1;
      private boolean isValid_ ;
      /**
       * <code>required bool isValid = 1;</code>
       */
      public boolean hasIsValid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required bool isValid = 1;</code>
       */
      public boolean getIsValid() {
        return isValid_;
      }
      /**
       * <code>required bool isValid = 1;</code>
       */
      public Builder setIsValid(boolean value) {
        bitField0_ |= 0x00000001;
        isValid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bool isValid = 1;</code>
       */
      public Builder clearIsValid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        isValid_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:main.StepValidateResponse)
    }

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

    // @@protoc_insertion_point(class_scope:main.StepValidateResponse)
  }

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

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

    public ExecutionEndingRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ExecutionEndingRequest(
        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 main.Messages.internal_static_main_ExecutionEndingRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return main.Messages.internal_static_main_ExecutionEndingRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              main.Messages.ExecutionEndingRequest.class, main.Messages.ExecutionEndingRequest.Builder.class);
    }

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

    @java.lang.Override
    public com.google.protobuf.Parser<ExecutionEndingRequest> 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 main.Messages.ExecutionEndingRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.ExecutionEndingRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.ExecutionEndingRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.ExecutionEndingRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.ExecutionEndingRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.ExecutionEndingRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static main.Messages.ExecutionEndingRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static main.Messages.ExecutionEndingRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static main.Messages.ExecutionEndingRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.ExecutionEndingRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(main.Messages.ExecutionEndingRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code main.ExecutionEndingRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements main.Messages.ExecutionEndingRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return main.Messages.internal_static_main_ExecutionEndingRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return main.Messages.internal_static_main_ExecutionEndingRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                main.Messages.ExecutionEndingRequest.class, main.Messages.ExecutionEndingRequest.Builder.class);
      }

      // Construct using main.Messages.ExecutionEndingRequest.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 main.Messages.internal_static_main_ExecutionEndingRequest_descriptor;
      }

      public main.Messages.ExecutionEndingRequest getDefaultInstanceForType() {
        return main.Messages.ExecutionEndingRequest.getDefaultInstance();
      }

      public main.Messages.ExecutionEndingRequest build() {
        main.Messages.ExecutionEndingRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public main.Messages.ExecutionEndingRequest buildPartial() {
        main.Messages.ExecutionEndingRequest result = new main.Messages.ExecutionEndingRequest(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof main.Messages.ExecutionEndingRequest) {
          return mergeFrom((main.Messages.ExecutionEndingRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(main.Messages.ExecutionEndingRequest other) {
        if (other == main.Messages.ExecutionEndingRequest.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 {
        main.Messages.ExecutionEndingRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (main.Messages.ExecutionEndingRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:main.ExecutionEndingRequest)
    }

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

    // @@protoc_insertion_point(class_scope:main.ExecutionEndingRequest)
  }

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

    // required .main.Message.MessageType messageType = 1;
    /**
     * <code>required .main.Message.MessageType messageType = 1;</code>
     */
    boolean hasMessageType();
    /**
     * <code>required .main.Message.MessageType messageType = 1;</code>
     */
    main.Messages.Message.MessageType getMessageType();

    // required int64 messageId = 2;
    /**
     * <code>required int64 messageId = 2;</code>
     *
     * <pre>
     * A unique id to represent this message. A response to the message should copy over this value
     * this is used to synchronize messages &amp; responses
     * </pre>
     */
    boolean hasMessageId();
    /**
     * <code>required int64 messageId = 2;</code>
     *
     * <pre>
     * A unique id to represent this message. A response to the message should copy over this value
     * this is used to synchronize messages &amp; responses
     * </pre>
     */
    long getMessageId();

    // optional .main.ExecutionStartingRequest executionStartingRequest = 3;
    /**
     * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
     *
     * <pre>
     * One of the following will have a value
     * </pre>
     */
    boolean hasExecutionStartingRequest();
    /**
     * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
     *
     * <pre>
     * One of the following will have a value
     * </pre>
     */
    main.Messages.ExecutionStartingRequest getExecutionStartingRequest();
    /**
     * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
     *
     * <pre>
     * One of the following will have a value
     * </pre>
     */
    main.Messages.ExecutionStartingRequestOrBuilder getExecutionStartingRequestOrBuilder();

    // optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;
    /**
     * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
     */
    boolean hasSpecExecutionStartingRequest();
    /**
     * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
     */
    main.Messages.SpecExecutionStartingRequest getSpecExecutionStartingRequest();
    /**
     * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
     */
    main.Messages.SpecExecutionStartingRequestOrBuilder getSpecExecutionStartingRequestOrBuilder();

    // optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;
    /**
     * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
     */
    boolean hasSpecExecutionEndingRequest();
    /**
     * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
     */
    main.Messages.SpecExecutionEndingRequest getSpecExecutionEndingRequest();
    /**
     * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
     */
    main.Messages.SpecExecutionEndingRequestOrBuilder getSpecExecutionEndingRequestOrBuilder();

    // optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;
    /**
     * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
     */
    boolean hasScenarioExecutionStartingRequest();
    /**
     * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
     */
    main.Messages.ScenarioExecutionStartingRequest getScenarioExecutionStartingRequest();
    /**
     * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
     */
    main.Messages.ScenarioExecutionStartingRequestOrBuilder getScenarioExecutionStartingRequestOrBuilder();

    // optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;
    /**
     * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
     */
    boolean hasScenarioExecutionEndingRequest();
    /**
     * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
     */
    main.Messages.ScenarioExecutionEndingRequest getScenarioExecutionEndingRequest();
    /**
     * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
     */
    main.Messages.ScenarioExecutionEndingRequestOrBuilder getScenarioExecutionEndingRequestOrBuilder();

    // optional .main.ExecuteStepRequest executeStepRequest = 8;
    /**
     * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
     */
    boolean hasExecuteStepRequest();
    /**
     * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
     */
    main.Messages.ExecuteStepRequest getExecuteStepRequest();
    /**
     * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
     */
    main.Messages.ExecuteStepRequestOrBuilder getExecuteStepRequestOrBuilder();

    // optional .main.ExecuteStepResponse executeStepResponse = 9;
    /**
     * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
     */
    boolean hasExecuteStepResponse();
    /**
     * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
     */
    main.Messages.ExecuteStepResponse getExecuteStepResponse();
    /**
     * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
     */
    main.Messages.ExecuteStepResponseOrBuilder getExecuteStepResponseOrBuilder();

    // optional .main.ExecutionEndingRequest executionEndingRequest = 10;
    /**
     * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
     */
    boolean hasExecutionEndingRequest();
    /**
     * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
     */
    main.Messages.ExecutionEndingRequest getExecutionEndingRequest();
    /**
     * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
     */
    main.Messages.ExecutionEndingRequestOrBuilder getExecutionEndingRequestOrBuilder();

    // optional .main.StepValidateRequest stepValidateRequest = 11;
    /**
     * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
     */
    boolean hasStepValidateRequest();
    /**
     * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
     */
    main.Messages.StepValidateRequest getStepValidateRequest();
    /**
     * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
     */
    main.Messages.StepValidateRequestOrBuilder getStepValidateRequestOrBuilder();

    // optional .main.StepValidateResponse stepValidateResponse = 12;
    /**
     * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
     */
    boolean hasStepValidateResponse();
    /**
     * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
     */
    main.Messages.StepValidateResponse getStepValidateResponse();
    /**
     * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
     */
    main.Messages.StepValidateResponseOrBuilder getStepValidateResponseOrBuilder();

    // optional .main.ExecutionStatusResponse executionStatusResponse = 13;
    /**
     * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
     */
    boolean hasExecutionStatusResponse();
    /**
     * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
     */
    main.Messages.ExecutionStatusResponse getExecutionStatusResponse();
    /**
     * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
     */
    main.Messages.ExecutionStatusResponseOrBuilder getExecutionStatusResponseOrBuilder();
  }
  /**
   * Protobuf type {@code main.Message}
   *
   * <pre>
   * This is the message which gets transferred all the time 
   * with proper message type set
   * </pre>
   */
  public static final class Message extends
      com.google.protobuf.GeneratedMessage
      implements MessageOrBuilder {
    // Use Message.newBuilder() to construct.
    private Message(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Message(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public Message getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Message(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              main.Messages.Message.MessageType value = main.Messages.Message.MessageType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                messageType_ = value;
              }
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              messageId_ = input.readInt64();
              break;
            }
            case 26: {
              main.Messages.ExecutionStartingRequest.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = executionStartingRequest_.toBuilder();
              }
              executionStartingRequest_ = input.readMessage(main.Messages.ExecutionStartingRequest.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(executionStartingRequest_);
                executionStartingRequest_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              main.Messages.SpecExecutionStartingRequest.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = specExecutionStartingRequest_.toBuilder();
              }
              specExecutionStartingRequest_ = input.readMessage(main.Messages.SpecExecutionStartingRequest.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(specExecutionStartingRequest_);
                specExecutionStartingRequest_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 42: {
              main.Messages.SpecExecutionEndingRequest.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = specExecutionEndingRequest_.toBuilder();
              }
              specExecutionEndingRequest_ = input.readMessage(main.Messages.SpecExecutionEndingRequest.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(specExecutionEndingRequest_);
                specExecutionEndingRequest_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 50: {
              main.Messages.ScenarioExecutionStartingRequest.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                subBuilder = scenarioExecutionStartingRequest_.toBuilder();
              }
              scenarioExecutionStartingRequest_ = input.readMessage(main.Messages.ScenarioExecutionStartingRequest.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(scenarioExecutionStartingRequest_);
                scenarioExecutionStartingRequest_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              break;
            }
            case 58: {
              main.Messages.ScenarioExecutionEndingRequest.Builder subBuilder = null;
              if (((bitField0_ & 0x00000040) == 0x00000040)) {
                subBuilder = scenarioExecutionEndingRequest_.toBuilder();
              }
              scenarioExecutionEndingRequest_ = input.readMessage(main.Messages.ScenarioExecutionEndingRequest.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(scenarioExecutionEndingRequest_);
                scenarioExecutionEndingRequest_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000040;
              break;
            }
            case 66: {
              main.Messages.ExecuteStepRequest.Builder subBuilder = null;
              if (((bitField0_ & 0x00000080) == 0x00000080)) {
                subBuilder = executeStepRequest_.toBuilder();
              }
              executeStepRequest_ = input.readMessage(main.Messages.ExecuteStepRequest.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(executeStepRequest_);
                executeStepRequest_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000080;
              break;
            }
            case 74: {
              main.Messages.ExecuteStepResponse.Builder subBuilder = null;
              if (((bitField0_ & 0x00000100) == 0x00000100)) {
                subBuilder = executeStepResponse_.toBuilder();
              }
              executeStepResponse_ = input.readMessage(main.Messages.ExecuteStepResponse.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(executeStepResponse_);
                executeStepResponse_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000100;
              break;
            }
            case 82: {
              main.Messages.ExecutionEndingRequest.Builder subBuilder = null;
              if (((bitField0_ & 0x00000200) == 0x00000200)) {
                subBuilder = executionEndingRequest_.toBuilder();
              }
              executionEndingRequest_ = input.readMessage(main.Messages.ExecutionEndingRequest.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(executionEndingRequest_);
                executionEndingRequest_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000200;
              break;
            }
            case 90: {
              main.Messages.StepValidateRequest.Builder subBuilder = null;
              if (((bitField0_ & 0x00000400) == 0x00000400)) {
                subBuilder = stepValidateRequest_.toBuilder();
              }
              stepValidateRequest_ = input.readMessage(main.Messages.StepValidateRequest.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(stepValidateRequest_);
                stepValidateRequest_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000400;
              break;
            }
            case 98: {
              main.Messages.StepValidateResponse.Builder subBuilder = null;
              if (((bitField0_ & 0x00000800) == 0x00000800)) {
                subBuilder = stepValidateResponse_.toBuilder();
              }
              stepValidateResponse_ = input.readMessage(main.Messages.StepValidateResponse.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(stepValidateResponse_);
                stepValidateResponse_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000800;
              break;
            }
            case 106: {
              main.Messages.ExecutionStatusResponse.Builder subBuilder = null;
              if (((bitField0_ & 0x00001000) == 0x00001000)) {
                subBuilder = executionStatusResponse_.toBuilder();
              }
              executionStatusResponse_ = input.readMessage(main.Messages.ExecutionStatusResponse.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(executionStatusResponse_);
                executionStatusResponse_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00001000;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return main.Messages.internal_static_main_Message_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return main.Messages.internal_static_main_Message_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              main.Messages.Message.class, main.Messages.Message.Builder.class);
    }

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

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

    /**
     * Protobuf enum {@code main.Message.MessageType}
     */
    public enum MessageType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>ExecutionStarting = 0;</code>
       */
      ExecutionStarting(0, 0),
      /**
       * <code>SpecExecutionStarting = 1;</code>
       */
      SpecExecutionStarting(1, 1),
      /**
       * <code>SpecExecutionEnding = 2;</code>
       */
      SpecExecutionEnding(2, 2),
      /**
       * <code>ScenarioExecutionStarting = 3;</code>
       */
      ScenarioExecutionStarting(3, 3),
      /**
       * <code>ScenarioExecutionEnding = 4;</code>
       */
      ScenarioExecutionEnding(4, 4),
      /**
       * <code>ExecuteStep = 5;</code>
       */
      ExecuteStep(5, 5),
      /**
       * <code>ExecuteStepResponse = 6;</code>
       */
      ExecuteStepResponse(6, 6),
      /**
       * <code>ExecutionEnding = 7;</code>
       */
      ExecutionEnding(7, 7),
      /**
       * <code>StepValidateRequest = 8;</code>
       */
      StepValidateRequest(8, 8),
      /**
       * <code>StepValidateResponse = 9;</code>
       */
      StepValidateResponse(9, 9),
      /**
       * <code>ExecutionStatusResponse = 10;</code>
       */
      ExecutionStatusResponse(10, 10),
      ;

      /**
       * <code>ExecutionStarting = 0;</code>
       */
      public static final int ExecutionStarting_VALUE = 0;
      /**
       * <code>SpecExecutionStarting = 1;</code>
       */
      public static final int SpecExecutionStarting_VALUE = 1;
      /**
       * <code>SpecExecutionEnding = 2;</code>
       */
      public static final int SpecExecutionEnding_VALUE = 2;
      /**
       * <code>ScenarioExecutionStarting = 3;</code>
       */
      public static final int ScenarioExecutionStarting_VALUE = 3;
      /**
       * <code>ScenarioExecutionEnding = 4;</code>
       */
      public static final int ScenarioExecutionEnding_VALUE = 4;
      /**
       * <code>ExecuteStep = 5;</code>
       */
      public static final int ExecuteStep_VALUE = 5;
      /**
       * <code>ExecuteStepResponse = 6;</code>
       */
      public static final int ExecuteStepResponse_VALUE = 6;
      /**
       * <code>ExecutionEnding = 7;</code>
       */
      public static final int ExecutionEnding_VALUE = 7;
      /**
       * <code>StepValidateRequest = 8;</code>
       */
      public static final int StepValidateRequest_VALUE = 8;
      /**
       * <code>StepValidateResponse = 9;</code>
       */
      public static final int StepValidateResponse_VALUE = 9;
      /**
       * <code>ExecutionStatusResponse = 10;</code>
       */
      public static final int ExecutionStatusResponse_VALUE = 10;


      public final int getNumber() { return value; }

      public static MessageType valueOf(int value) {
        switch (value) {
          case 0: return ExecutionStarting;
          case 1: return SpecExecutionStarting;
          case 2: return SpecExecutionEnding;
          case 3: return ScenarioExecutionStarting;
          case 4: return ScenarioExecutionEnding;
          case 5: return ExecuteStep;
          case 6: return ExecuteStepResponse;
          case 7: return ExecutionEnding;
          case 8: return StepValidateRequest;
          case 9: return StepValidateResponse;
          case 10: return ExecutionStatusResponse;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<MessageType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap<MessageType>
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<MessageType>() {
              public MessageType findValueByNumber(int number) {
                return MessageType.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 main.Messages.Message.getDescriptor().getEnumTypes().get(0);
      }

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

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

      // @@protoc_insertion_point(enum_scope:main.Message.MessageType)
    }

    private int bitField0_;
    // required .main.Message.MessageType messageType = 1;
    public static final int MESSAGETYPE_FIELD_NUMBER = 1;
    private main.Messages.Message.MessageType messageType_;
    /**
     * <code>required .main.Message.MessageType messageType = 1;</code>
     */
    public boolean hasMessageType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .main.Message.MessageType messageType = 1;</code>
     */
    public main.Messages.Message.MessageType getMessageType() {
      return messageType_;
    }

    // required int64 messageId = 2;
    public static final int MESSAGEID_FIELD_NUMBER = 2;
    private long messageId_;
    /**
     * <code>required int64 messageId = 2;</code>
     *
     * <pre>
     * A unique id to represent this message. A response to the message should copy over this value
     * this is used to synchronize messages &amp; responses
     * </pre>
     */
    public boolean hasMessageId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int64 messageId = 2;</code>
     *
     * <pre>
     * A unique id to represent this message. A response to the message should copy over this value
     * this is used to synchronize messages &amp; responses
     * </pre>
     */
    public long getMessageId() {
      return messageId_;
    }

    // optional .main.ExecutionStartingRequest executionStartingRequest = 3;
    public static final int EXECUTIONSTARTINGREQUEST_FIELD_NUMBER = 3;
    private main.Messages.ExecutionStartingRequest executionStartingRequest_;
    /**
     * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
     *
     * <pre>
     * One of the following will have a value
     * </pre>
     */
    public boolean hasExecutionStartingRequest() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
     *
     * <pre>
     * One of the following will have a value
     * </pre>
     */
    public main.Messages.ExecutionStartingRequest getExecutionStartingRequest() {
      return executionStartingRequest_;
    }
    /**
     * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
     *
     * <pre>
     * One of the following will have a value
     * </pre>
     */
    public main.Messages.ExecutionStartingRequestOrBuilder getExecutionStartingRequestOrBuilder() {
      return executionStartingRequest_;
    }

    // optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;
    public static final int SPECEXECUTIONSTARTINGREQUEST_FIELD_NUMBER = 4;
    private main.Messages.SpecExecutionStartingRequest specExecutionStartingRequest_;
    /**
     * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
     */
    public boolean hasSpecExecutionStartingRequest() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
     */
    public main.Messages.SpecExecutionStartingRequest getSpecExecutionStartingRequest() {
      return specExecutionStartingRequest_;
    }
    /**
     * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
     */
    public main.Messages.SpecExecutionStartingRequestOrBuilder getSpecExecutionStartingRequestOrBuilder() {
      return specExecutionStartingRequest_;
    }

    // optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;
    public static final int SPECEXECUTIONENDINGREQUEST_FIELD_NUMBER = 5;
    private main.Messages.SpecExecutionEndingRequest specExecutionEndingRequest_;
    /**
     * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
     */
    public boolean hasSpecExecutionEndingRequest() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
     */
    public main.Messages.SpecExecutionEndingRequest getSpecExecutionEndingRequest() {
      return specExecutionEndingRequest_;
    }
    /**
     * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
     */
    public main.Messages.SpecExecutionEndingRequestOrBuilder getSpecExecutionEndingRequestOrBuilder() {
      return specExecutionEndingRequest_;
    }

    // optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;
    public static final int SCENARIOEXECUTIONSTARTINGREQUEST_FIELD_NUMBER = 6;
    private main.Messages.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest_;
    /**
     * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
     */
    public boolean hasScenarioExecutionStartingRequest() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
     */
    public main.Messages.ScenarioExecutionStartingRequest getScenarioExecutionStartingRequest() {
      return scenarioExecutionStartingRequest_;
    }
    /**
     * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
     */
    public main.Messages.ScenarioExecutionStartingRequestOrBuilder getScenarioExecutionStartingRequestOrBuilder() {
      return scenarioExecutionStartingRequest_;
    }

    // optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;
    public static final int SCENARIOEXECUTIONENDINGREQUEST_FIELD_NUMBER = 7;
    private main.Messages.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest_;
    /**
     * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
     */
    public boolean hasScenarioExecutionEndingRequest() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
     */
    public main.Messages.ScenarioExecutionEndingRequest getScenarioExecutionEndingRequest() {
      return scenarioExecutionEndingRequest_;
    }
    /**
     * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
     */
    public main.Messages.ScenarioExecutionEndingRequestOrBuilder getScenarioExecutionEndingRequestOrBuilder() {
      return scenarioExecutionEndingRequest_;
    }

    // optional .main.ExecuteStepRequest executeStepRequest = 8;
    public static final int EXECUTESTEPREQUEST_FIELD_NUMBER = 8;
    private main.Messages.ExecuteStepRequest executeStepRequest_;
    /**
     * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
     */
    public boolean hasExecuteStepRequest() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
     */
    public main.Messages.ExecuteStepRequest getExecuteStepRequest() {
      return executeStepRequest_;
    }
    /**
     * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
     */
    public main.Messages.ExecuteStepRequestOrBuilder getExecuteStepRequestOrBuilder() {
      return executeStepRequest_;
    }

    // optional .main.ExecuteStepResponse executeStepResponse = 9;
    public static final int EXECUTESTEPRESPONSE_FIELD_NUMBER = 9;
    private main.Messages.ExecuteStepResponse executeStepResponse_;
    /**
     * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
     */
    public boolean hasExecuteStepResponse() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
     */
    public main.Messages.ExecuteStepResponse getExecuteStepResponse() {
      return executeStepResponse_;
    }
    /**
     * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
     */
    public main.Messages.ExecuteStepResponseOrBuilder getExecuteStepResponseOrBuilder() {
      return executeStepResponse_;
    }

    // optional .main.ExecutionEndingRequest executionEndingRequest = 10;
    public static final int EXECUTIONENDINGREQUEST_FIELD_NUMBER = 10;
    private main.Messages.ExecutionEndingRequest executionEndingRequest_;
    /**
     * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
     */
    public boolean hasExecutionEndingRequest() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
     */
    public main.Messages.ExecutionEndingRequest getExecutionEndingRequest() {
      return executionEndingRequest_;
    }
    /**
     * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
     */
    public main.Messages.ExecutionEndingRequestOrBuilder getExecutionEndingRequestOrBuilder() {
      return executionEndingRequest_;
    }

    // optional .main.StepValidateRequest stepValidateRequest = 11;
    public static final int STEPVALIDATEREQUEST_FIELD_NUMBER = 11;
    private main.Messages.StepValidateRequest stepValidateRequest_;
    /**
     * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
     */
    public boolean hasStepValidateRequest() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    /**
     * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
     */
    public main.Messages.StepValidateRequest getStepValidateRequest() {
      return stepValidateRequest_;
    }
    /**
     * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
     */
    public main.Messages.StepValidateRequestOrBuilder getStepValidateRequestOrBuilder() {
      return stepValidateRequest_;
    }

    // optional .main.StepValidateResponse stepValidateResponse = 12;
    public static final int STEPVALIDATERESPONSE_FIELD_NUMBER = 12;
    private main.Messages.StepValidateResponse stepValidateResponse_;
    /**
     * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
     */
    public boolean hasStepValidateResponse() {
      return ((bitField0_ & 0x00000800) == 0x00000800);
    }
    /**
     * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
     */
    public main.Messages.StepValidateResponse getStepValidateResponse() {
      return stepValidateResponse_;
    }
    /**
     * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
     */
    public main.Messages.StepValidateResponseOrBuilder getStepValidateResponseOrBuilder() {
      return stepValidateResponse_;
    }

    // optional .main.ExecutionStatusResponse executionStatusResponse = 13;
    public static final int EXECUTIONSTATUSRESPONSE_FIELD_NUMBER = 13;
    private main.Messages.ExecutionStatusResponse executionStatusResponse_;
    /**
     * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
     */
    public boolean hasExecutionStatusResponse() {
      return ((bitField0_ & 0x00001000) == 0x00001000);
    }
    /**
     * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
     */
    public main.Messages.ExecutionStatusResponse getExecutionStatusResponse() {
      return executionStatusResponse_;
    }
    /**
     * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
     */
    public main.Messages.ExecutionStatusResponseOrBuilder getExecutionStatusResponseOrBuilder() {
      return executionStatusResponse_;
    }

    private void initFields() {
      messageType_ = main.Messages.Message.MessageType.ExecutionStarting;
      messageId_ = 0L;
      executionStartingRequest_ = main.Messages.ExecutionStartingRequest.getDefaultInstance();
      specExecutionStartingRequest_ = main.Messages.SpecExecutionStartingRequest.getDefaultInstance();
      specExecutionEndingRequest_ = main.Messages.SpecExecutionEndingRequest.getDefaultInstance();
      scenarioExecutionStartingRequest_ = main.Messages.ScenarioExecutionStartingRequest.getDefaultInstance();
      scenarioExecutionEndingRequest_ = main.Messages.ScenarioExecutionEndingRequest.getDefaultInstance();
      executeStepRequest_ = main.Messages.ExecuteStepRequest.getDefaultInstance();
      executeStepResponse_ = main.Messages.ExecuteStepResponse.getDefaultInstance();
      executionEndingRequest_ = main.Messages.ExecutionEndingRequest.getDefaultInstance();
      stepValidateRequest_ = main.Messages.StepValidateRequest.getDefaultInstance();
      stepValidateResponse_ = main.Messages.StepValidateResponse.getDefaultInstance();
      executionStatusResponse_ = main.Messages.ExecutionStatusResponse.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasMessageType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMessageId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasExecutionStartingRequest()) {
        if (!getExecutionStartingRequest().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSpecExecutionStartingRequest()) {
        if (!getSpecExecutionStartingRequest().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSpecExecutionEndingRequest()) {
        if (!getSpecExecutionEndingRequest().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasExecuteStepRequest()) {
        if (!getExecuteStepRequest().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasExecuteStepResponse()) {
        if (!getExecuteStepResponse().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasStepValidateRequest()) {
        if (!getStepValidateRequest().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasStepValidateResponse()) {
        if (!getStepValidateResponse().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasExecutionStatusResponse()) {
        if (!getExecutionStatusResponse().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, messageType_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, messageId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, executionStartingRequest_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, specExecutionStartingRequest_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, specExecutionEndingRequest_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(6, scenarioExecutionStartingRequest_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeMessage(7, scenarioExecutionEndingRequest_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeMessage(8, executeStepRequest_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeMessage(9, executeStepResponse_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeMessage(10, executionEndingRequest_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeMessage(11, stepValidateRequest_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        output.writeMessage(12, stepValidateResponse_);
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        output.writeMessage(13, executionStatusResponse_);
      }
      getUnknownFields().writeTo(output);
    }

    private int 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, messageType_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, messageId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, executionStartingRequest_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, specExecutionStartingRequest_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, specExecutionEndingRequest_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, scenarioExecutionStartingRequest_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, scenarioExecutionEndingRequest_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, executeStepRequest_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, executeStepResponse_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, executionEndingRequest_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, stepValidateRequest_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, stepValidateResponse_);
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, executionStatusResponse_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

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

    public static main.Messages.Message parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.Message parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.Message parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static main.Messages.Message parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static main.Messages.Message parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.Message parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static main.Messages.Message parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static main.Messages.Message parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static main.Messages.Message parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static main.Messages.Message parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(main.Messages.Message prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code main.Message}
     *
     * <pre>
     * This is the message which gets transferred all the time 
     * with proper message type set
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements main.Messages.MessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return main.Messages.internal_static_main_Message_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return main.Messages.internal_static_main_Message_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                main.Messages.Message.class, main.Messages.Message.Builder.class);
      }

      // Construct using main.Messages.Message.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getExecutionStartingRequestFieldBuilder();
          getSpecExecutionStartingRequestFieldBuilder();
          getSpecExecutionEndingRequestFieldBuilder();
          getScenarioExecutionStartingRequestFieldBuilder();
          getScenarioExecutionEndingRequestFieldBuilder();
          getExecuteStepRequestFieldBuilder();
          getExecuteStepResponseFieldBuilder();
          getExecutionEndingRequestFieldBuilder();
          getStepValidateRequestFieldBuilder();
          getStepValidateResponseFieldBuilder();
          getExecutionStatusResponseFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        messageType_ = main.Messages.Message.MessageType.ExecutionStarting;
        bitField0_ = (bitField0_ & ~0x00000001);
        messageId_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (executionStartingRequestBuilder_ == null) {
          executionStartingRequest_ = main.Messages.ExecutionStartingRequest.getDefaultInstance();
        } else {
          executionStartingRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (specExecutionStartingRequestBuilder_ == null) {
          specExecutionStartingRequest_ = main.Messages.SpecExecutionStartingRequest.getDefaultInstance();
        } else {
          specExecutionStartingRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (specExecutionEndingRequestBuilder_ == null) {
          specExecutionEndingRequest_ = main.Messages.SpecExecutionEndingRequest.getDefaultInstance();
        } else {
          specExecutionEndingRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        if (scenarioExecutionStartingRequestBuilder_ == null) {
          scenarioExecutionStartingRequest_ = main.Messages.ScenarioExecutionStartingRequest.getDefaultInstance();
        } else {
          scenarioExecutionStartingRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        if (scenarioExecutionEndingRequestBuilder_ == null) {
          scenarioExecutionEndingRequest_ = main.Messages.ScenarioExecutionEndingRequest.getDefaultInstance();
        } else {
          scenarioExecutionEndingRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (executeStepRequestBuilder_ == null) {
          executeStepRequest_ = main.Messages.ExecuteStepRequest.getDefaultInstance();
        } else {
          executeStepRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        if (executeStepResponseBuilder_ == null) {
          executeStepResponse_ = main.Messages.ExecuteStepResponse.getDefaultInstance();
        } else {
          executeStepResponseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        if (executionEndingRequestBuilder_ == null) {
          executionEndingRequest_ = main.Messages.ExecutionEndingRequest.getDefaultInstance();
        } else {
          executionEndingRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000200);
        if (stepValidateRequestBuilder_ == null) {
          stepValidateRequest_ = main.Messages.StepValidateRequest.getDefaultInstance();
        } else {
          stepValidateRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000400);
        if (stepValidateResponseBuilder_ == null) {
          stepValidateResponse_ = main.Messages.StepValidateResponse.getDefaultInstance();
        } else {
          stepValidateResponseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000800);
        if (executionStatusResponseBuilder_ == null) {
          executionStatusResponse_ = main.Messages.ExecutionStatusResponse.getDefaultInstance();
        } else {
          executionStatusResponseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00001000);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return main.Messages.internal_static_main_Message_descriptor;
      }

      public main.Messages.Message getDefaultInstanceForType() {
        return main.Messages.Message.getDefaultInstance();
      }

      public main.Messages.Message build() {
        main.Messages.Message result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public main.Messages.Message buildPartial() {
        main.Messages.Message result = new main.Messages.Message(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.messageType_ = messageType_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.messageId_ = messageId_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (executionStartingRequestBuilder_ == null) {
          result.executionStartingRequest_ = executionStartingRequest_;
        } else {
          result.executionStartingRequest_ = executionStartingRequestBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        if (specExecutionStartingRequestBuilder_ == null) {
          result.specExecutionStartingRequest_ = specExecutionStartingRequest_;
        } else {
          result.specExecutionStartingRequest_ = specExecutionStartingRequestBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        if (specExecutionEndingRequestBuilder_ == null) {
          result.specExecutionEndingRequest_ = specExecutionEndingRequest_;
        } else {
          result.specExecutionEndingRequest_ = specExecutionEndingRequestBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        if (scenarioExecutionStartingRequestBuilder_ == null) {
          result.scenarioExecutionStartingRequest_ = scenarioExecutionStartingRequest_;
        } else {
          result.scenarioExecutionStartingRequest_ = scenarioExecutionStartingRequestBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        if (scenarioExecutionEndingRequestBuilder_ == null) {
          result.scenarioExecutionEndingRequest_ = scenarioExecutionEndingRequest_;
        } else {
          result.scenarioExecutionEndingRequest_ = scenarioExecutionEndingRequestBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        if (executeStepRequestBuilder_ == null) {
          result.executeStepRequest_ = executeStepRequest_;
        } else {
          result.executeStepRequest_ = executeStepRequestBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        if (executeStepResponseBuilder_ == null) {
          result.executeStepResponse_ = executeStepResponse_;
        } else {
          result.executeStepResponse_ = executeStepResponseBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        if (executionEndingRequestBuilder_ == null) {
          result.executionEndingRequest_ = executionEndingRequest_;
        } else {
          result.executionEndingRequest_ = executionEndingRequestBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000400;
        }
        if (stepValidateRequestBuilder_ == null) {
          result.stepValidateRequest_ = stepValidateRequest_;
        } else {
          result.stepValidateRequest_ = stepValidateRequestBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000800;
        }
        if (stepValidateResponseBuilder_ == null) {
          result.stepValidateResponse_ = stepValidateResponse_;
        } else {
          result.stepValidateResponse_ = stepValidateResponseBuilder_.build();
        }
        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
          to_bitField0_ |= 0x00001000;
        }
        if (executionStatusResponseBuilder_ == null) {
          result.executionStatusResponse_ = executionStatusResponse_;
        } else {
          result.executionStatusResponse_ = executionStatusResponseBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof main.Messages.Message) {
          return mergeFrom((main.Messages.Message)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(main.Messages.Message other) {
        if (other == main.Messages.Message.getDefaultInstance()) return this;
        if (other.hasMessageType()) {
          setMessageType(other.getMessageType());
        }
        if (other.hasMessageId()) {
          setMessageId(other.getMessageId());
        }
        if (other.hasExecutionStartingRequest()) {
          mergeExecutionStartingRequest(other.getExecutionStartingRequest());
        }
        if (other.hasSpecExecutionStartingRequest()) {
          mergeSpecExecutionStartingRequest(other.getSpecExecutionStartingRequest());
        }
        if (other.hasSpecExecutionEndingRequest()) {
          mergeSpecExecutionEndingRequest(other.getSpecExecutionEndingRequest());
        }
        if (other.hasScenarioExecutionStartingRequest()) {
          mergeScenarioExecutionStartingRequest(other.getScenarioExecutionStartingRequest());
        }
        if (other.hasScenarioExecutionEndingRequest()) {
          mergeScenarioExecutionEndingRequest(other.getScenarioExecutionEndingRequest());
        }
        if (other.hasExecuteStepRequest()) {
          mergeExecuteStepRequest(other.getExecuteStepRequest());
        }
        if (other.hasExecuteStepResponse()) {
          mergeExecuteStepResponse(other.getExecuteStepResponse());
        }
        if (other.hasExecutionEndingRequest()) {
          mergeExecutionEndingRequest(other.getExecutionEndingRequest());
        }
        if (other.hasStepValidateRequest()) {
          mergeStepValidateRequest(other.getStepValidateRequest());
        }
        if (other.hasStepValidateResponse()) {
          mergeStepValidateResponse(other.getStepValidateResponse());
        }
        if (other.hasExecutionStatusResponse()) {
          mergeExecutionStatusResponse(other.getExecutionStatusResponse());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasMessageType()) {
          
          return false;
        }
        if (!hasMessageId()) {
          
          return false;
        }
        if (hasExecutionStartingRequest()) {
          if (!getExecutionStartingRequest().isInitialized()) {
            
            return false;
          }
        }
        if (hasSpecExecutionStartingRequest()) {
          if (!getSpecExecutionStartingRequest().isInitialized()) {
            
            return false;
          }
        }
        if (hasSpecExecutionEndingRequest()) {
          if (!getSpecExecutionEndingRequest().isInitialized()) {
            
            return false;
          }
        }
        if (hasExecuteStepRequest()) {
          if (!getExecuteStepRequest().isInitialized()) {
            
            return false;
          }
        }
        if (hasExecuteStepResponse()) {
          if (!getExecuteStepResponse().isInitialized()) {
            
            return false;
          }
        }
        if (hasStepValidateRequest()) {
          if (!getStepValidateRequest().isInitialized()) {
            
            return false;
          }
        }
        if (hasStepValidateResponse()) {
          if (!getStepValidateResponse().isInitialized()) {
            
            return false;
          }
        }
        if (hasExecutionStatusResponse()) {
          if (!getExecutionStatusResponse().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        main.Messages.Message parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (main.Messages.Message) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required .main.Message.MessageType messageType = 1;
      private main.Messages.Message.MessageType messageType_ = main.Messages.Message.MessageType.ExecutionStarting;
      /**
       * <code>required .main.Message.MessageType messageType = 1;</code>
       */
      public boolean hasMessageType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .main.Message.MessageType messageType = 1;</code>
       */
      public main.Messages.Message.MessageType getMessageType() {
        return messageType_;
      }
      /**
       * <code>required .main.Message.MessageType messageType = 1;</code>
       */
      public Builder setMessageType(main.Messages.Message.MessageType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        messageType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required .main.Message.MessageType messageType = 1;</code>
       */
      public Builder clearMessageType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        messageType_ = main.Messages.Message.MessageType.ExecutionStarting;
        onChanged();
        return this;
      }

      // required int64 messageId = 2;
      private long messageId_ ;
      /**
       * <code>required int64 messageId = 2;</code>
       *
       * <pre>
       * A unique id to represent this message. A response to the message should copy over this value
       * this is used to synchronize messages &amp; responses
       * </pre>
       */
      public boolean hasMessageId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int64 messageId = 2;</code>
       *
       * <pre>
       * A unique id to represent this message. A response to the message should copy over this value
       * this is used to synchronize messages &amp; responses
       * </pre>
       */
      public long getMessageId() {
        return messageId_;
      }
      /**
       * <code>required int64 messageId = 2;</code>
       *
       * <pre>
       * A unique id to represent this message. A response to the message should copy over this value
       * this is used to synchronize messages &amp; responses
       * </pre>
       */
      public Builder setMessageId(long value) {
        bitField0_ |= 0x00000002;
        messageId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 messageId = 2;</code>
       *
       * <pre>
       * A unique id to represent this message. A response to the message should copy over this value
       * this is used to synchronize messages &amp; responses
       * </pre>
       */
      public Builder clearMessageId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        messageId_ = 0L;
        onChanged();
        return this;
      }

      // optional .main.ExecutionStartingRequest executionStartingRequest = 3;
      private main.Messages.ExecutionStartingRequest executionStartingRequest_ = main.Messages.ExecutionStartingRequest.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ExecutionStartingRequest, main.Messages.ExecutionStartingRequest.Builder, main.Messages.ExecutionStartingRequestOrBuilder> executionStartingRequestBuilder_;
      /**
       * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
       *
       * <pre>
       * One of the following will have a value
       * </pre>
       */
      public boolean hasExecutionStartingRequest() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
       *
       * <pre>
       * One of the following will have a value
       * </pre>
       */
      public main.Messages.ExecutionStartingRequest getExecutionStartingRequest() {
        if (executionStartingRequestBuilder_ == null) {
          return executionStartingRequest_;
        } else {
          return executionStartingRequestBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
       *
       * <pre>
       * One of the following will have a value
       * </pre>
       */
      public Builder setExecutionStartingRequest(main.Messages.ExecutionStartingRequest value) {
        if (executionStartingRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          executionStartingRequest_ = value;
          onChanged();
        } else {
          executionStartingRequestBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
       *
       * <pre>
       * One of the following will have a value
       * </pre>
       */
      public Builder setExecutionStartingRequest(
          main.Messages.ExecutionStartingRequest.Builder builderForValue) {
        if (executionStartingRequestBuilder_ == null) {
          executionStartingRequest_ = builderForValue.build();
          onChanged();
        } else {
          executionStartingRequestBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
       *
       * <pre>
       * One of the following will have a value
       * </pre>
       */
      public Builder mergeExecutionStartingRequest(main.Messages.ExecutionStartingRequest value) {
        if (executionStartingRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              executionStartingRequest_ != main.Messages.ExecutionStartingRequest.getDefaultInstance()) {
            executionStartingRequest_ =
              main.Messages.ExecutionStartingRequest.newBuilder(executionStartingRequest_).mergeFrom(value).buildPartial();
          } else {
            executionStartingRequest_ = value;
          }
          onChanged();
        } else {
          executionStartingRequestBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
       *
       * <pre>
       * One of the following will have a value
       * </pre>
       */
      public Builder clearExecutionStartingRequest() {
        if (executionStartingRequestBuilder_ == null) {
          executionStartingRequest_ = main.Messages.ExecutionStartingRequest.getDefaultInstance();
          onChanged();
        } else {
          executionStartingRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
       *
       * <pre>
       * One of the following will have a value
       * </pre>
       */
      public main.Messages.ExecutionStartingRequest.Builder getExecutionStartingRequestBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getExecutionStartingRequestFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
       *
       * <pre>
       * One of the following will have a value
       * </pre>
       */
      public main.Messages.ExecutionStartingRequestOrBuilder getExecutionStartingRequestOrBuilder() {
        if (executionStartingRequestBuilder_ != null) {
          return executionStartingRequestBuilder_.getMessageOrBuilder();
        } else {
          return executionStartingRequest_;
        }
      }
      /**
       * <code>optional .main.ExecutionStartingRequest executionStartingRequest = 3;</code>
       *
       * <pre>
       * One of the following will have a value
       * </pre>
       */
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ExecutionStartingRequest, main.Messages.ExecutionStartingRequest.Builder, main.Messages.ExecutionStartingRequestOrBuilder> 
          getExecutionStartingRequestFieldBuilder() {
        if (executionStartingRequestBuilder_ == null) {
          executionStartingRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              main.Messages.ExecutionStartingRequest, main.Messages.ExecutionStartingRequest.Builder, main.Messages.ExecutionStartingRequestOrBuilder>(
                  executionStartingRequest_,
                  getParentForChildren(),
                  isClean());
          executionStartingRequest_ = null;
        }
        return executionStartingRequestBuilder_;
      }

      // optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;
      private main.Messages.SpecExecutionStartingRequest specExecutionStartingRequest_ = main.Messages.SpecExecutionStartingRequest.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.SpecExecutionStartingRequest, main.Messages.SpecExecutionStartingRequest.Builder, main.Messages.SpecExecutionStartingRequestOrBuilder> specExecutionStartingRequestBuilder_;
      /**
       * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
       */
      public boolean hasSpecExecutionStartingRequest() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
       */
      public main.Messages.SpecExecutionStartingRequest getSpecExecutionStartingRequest() {
        if (specExecutionStartingRequestBuilder_ == null) {
          return specExecutionStartingRequest_;
        } else {
          return specExecutionStartingRequestBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
       */
      public Builder setSpecExecutionStartingRequest(main.Messages.SpecExecutionStartingRequest value) {
        if (specExecutionStartingRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          specExecutionStartingRequest_ = value;
          onChanged();
        } else {
          specExecutionStartingRequestBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
       */
      public Builder setSpecExecutionStartingRequest(
          main.Messages.SpecExecutionStartingRequest.Builder builderForValue) {
        if (specExecutionStartingRequestBuilder_ == null) {
          specExecutionStartingRequest_ = builderForValue.build();
          onChanged();
        } else {
          specExecutionStartingRequestBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
       */
      public Builder mergeSpecExecutionStartingRequest(main.Messages.SpecExecutionStartingRequest value) {
        if (specExecutionStartingRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              specExecutionStartingRequest_ != main.Messages.SpecExecutionStartingRequest.getDefaultInstance()) {
            specExecutionStartingRequest_ =
              main.Messages.SpecExecutionStartingRequest.newBuilder(specExecutionStartingRequest_).mergeFrom(value).buildPartial();
          } else {
            specExecutionStartingRequest_ = value;
          }
          onChanged();
        } else {
          specExecutionStartingRequestBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
       */
      public Builder clearSpecExecutionStartingRequest() {
        if (specExecutionStartingRequestBuilder_ == null) {
          specExecutionStartingRequest_ = main.Messages.SpecExecutionStartingRequest.getDefaultInstance();
          onChanged();
        } else {
          specExecutionStartingRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
       */
      public main.Messages.SpecExecutionStartingRequest.Builder getSpecExecutionStartingRequestBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getSpecExecutionStartingRequestFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
       */
      public main.Messages.SpecExecutionStartingRequestOrBuilder getSpecExecutionStartingRequestOrBuilder() {
        if (specExecutionStartingRequestBuilder_ != null) {
          return specExecutionStartingRequestBuilder_.getMessageOrBuilder();
        } else {
          return specExecutionStartingRequest_;
        }
      }
      /**
       * <code>optional .main.SpecExecutionStartingRequest specExecutionStartingRequest = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.SpecExecutionStartingRequest, main.Messages.SpecExecutionStartingRequest.Builder, main.Messages.SpecExecutionStartingRequestOrBuilder> 
          getSpecExecutionStartingRequestFieldBuilder() {
        if (specExecutionStartingRequestBuilder_ == null) {
          specExecutionStartingRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              main.Messages.SpecExecutionStartingRequest, main.Messages.SpecExecutionStartingRequest.Builder, main.Messages.SpecExecutionStartingRequestOrBuilder>(
                  specExecutionStartingRequest_,
                  getParentForChildren(),
                  isClean());
          specExecutionStartingRequest_ = null;
        }
        return specExecutionStartingRequestBuilder_;
      }

      // optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;
      private main.Messages.SpecExecutionEndingRequest specExecutionEndingRequest_ = main.Messages.SpecExecutionEndingRequest.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.SpecExecutionEndingRequest, main.Messages.SpecExecutionEndingRequest.Builder, main.Messages.SpecExecutionEndingRequestOrBuilder> specExecutionEndingRequestBuilder_;
      /**
       * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
       */
      public boolean hasSpecExecutionEndingRequest() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
       */
      public main.Messages.SpecExecutionEndingRequest getSpecExecutionEndingRequest() {
        if (specExecutionEndingRequestBuilder_ == null) {
          return specExecutionEndingRequest_;
        } else {
          return specExecutionEndingRequestBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
       */
      public Builder setSpecExecutionEndingRequest(main.Messages.SpecExecutionEndingRequest value) {
        if (specExecutionEndingRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          specExecutionEndingRequest_ = value;
          onChanged();
        } else {
          specExecutionEndingRequestBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
       */
      public Builder setSpecExecutionEndingRequest(
          main.Messages.SpecExecutionEndingRequest.Builder builderForValue) {
        if (specExecutionEndingRequestBuilder_ == null) {
          specExecutionEndingRequest_ = builderForValue.build();
          onChanged();
        } else {
          specExecutionEndingRequestBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
       */
      public Builder mergeSpecExecutionEndingRequest(main.Messages.SpecExecutionEndingRequest value) {
        if (specExecutionEndingRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010) &&
              specExecutionEndingRequest_ != main.Messages.SpecExecutionEndingRequest.getDefaultInstance()) {
            specExecutionEndingRequest_ =
              main.Messages.SpecExecutionEndingRequest.newBuilder(specExecutionEndingRequest_).mergeFrom(value).buildPartial();
          } else {
            specExecutionEndingRequest_ = value;
          }
          onChanged();
        } else {
          specExecutionEndingRequestBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
       */
      public Builder clearSpecExecutionEndingRequest() {
        if (specExecutionEndingRequestBuilder_ == null) {
          specExecutionEndingRequest_ = main.Messages.SpecExecutionEndingRequest.getDefaultInstance();
          onChanged();
        } else {
          specExecutionEndingRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
       */
      public main.Messages.SpecExecutionEndingRequest.Builder getSpecExecutionEndingRequestBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getSpecExecutionEndingRequestFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
       */
      public main.Messages.SpecExecutionEndingRequestOrBuilder getSpecExecutionEndingRequestOrBuilder() {
        if (specExecutionEndingRequestBuilder_ != null) {
          return specExecutionEndingRequestBuilder_.getMessageOrBuilder();
        } else {
          return specExecutionEndingRequest_;
        }
      }
      /**
       * <code>optional .main.SpecExecutionEndingRequest specExecutionEndingRequest = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.SpecExecutionEndingRequest, main.Messages.SpecExecutionEndingRequest.Builder, main.Messages.SpecExecutionEndingRequestOrBuilder> 
          getSpecExecutionEndingRequestFieldBuilder() {
        if (specExecutionEndingRequestBuilder_ == null) {
          specExecutionEndingRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              main.Messages.SpecExecutionEndingRequest, main.Messages.SpecExecutionEndingRequest.Builder, main.Messages.SpecExecutionEndingRequestOrBuilder>(
                  specExecutionEndingRequest_,
                  getParentForChildren(),
                  isClean());
          specExecutionEndingRequest_ = null;
        }
        return specExecutionEndingRequestBuilder_;
      }

      // optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;
      private main.Messages.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest_ = main.Messages.ScenarioExecutionStartingRequest.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ScenarioExecutionStartingRequest, main.Messages.ScenarioExecutionStartingRequest.Builder, main.Messages.ScenarioExecutionStartingRequestOrBuilder> scenarioExecutionStartingRequestBuilder_;
      /**
       * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
       */
      public boolean hasScenarioExecutionStartingRequest() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
       */
      public main.Messages.ScenarioExecutionStartingRequest getScenarioExecutionStartingRequest() {
        if (scenarioExecutionStartingRequestBuilder_ == null) {
          return scenarioExecutionStartingRequest_;
        } else {
          return scenarioExecutionStartingRequestBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
       */
      public Builder setScenarioExecutionStartingRequest(main.Messages.ScenarioExecutionStartingRequest value) {
        if (scenarioExecutionStartingRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          scenarioExecutionStartingRequest_ = value;
          onChanged();
        } else {
          scenarioExecutionStartingRequestBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
       */
      public Builder setScenarioExecutionStartingRequest(
          main.Messages.ScenarioExecutionStartingRequest.Builder builderForValue) {
        if (scenarioExecutionStartingRequestBuilder_ == null) {
          scenarioExecutionStartingRequest_ = builderForValue.build();
          onChanged();
        } else {
          scenarioExecutionStartingRequestBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
       */
      public Builder mergeScenarioExecutionStartingRequest(main.Messages.ScenarioExecutionStartingRequest value) {
        if (scenarioExecutionStartingRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020) &&
              scenarioExecutionStartingRequest_ != main.Messages.ScenarioExecutionStartingRequest.getDefaultInstance()) {
            scenarioExecutionStartingRequest_ =
              main.Messages.ScenarioExecutionStartingRequest.newBuilder(scenarioExecutionStartingRequest_).mergeFrom(value).buildPartial();
          } else {
            scenarioExecutionStartingRequest_ = value;
          }
          onChanged();
        } else {
          scenarioExecutionStartingRequestBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
       */
      public Builder clearScenarioExecutionStartingRequest() {
        if (scenarioExecutionStartingRequestBuilder_ == null) {
          scenarioExecutionStartingRequest_ = main.Messages.ScenarioExecutionStartingRequest.getDefaultInstance();
          onChanged();
        } else {
          scenarioExecutionStartingRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }
      /**
       * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
       */
      public main.Messages.ScenarioExecutionStartingRequest.Builder getScenarioExecutionStartingRequestBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getScenarioExecutionStartingRequestFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
       */
      public main.Messages.ScenarioExecutionStartingRequestOrBuilder getScenarioExecutionStartingRequestOrBuilder() {
        if (scenarioExecutionStartingRequestBuilder_ != null) {
          return scenarioExecutionStartingRequestBuilder_.getMessageOrBuilder();
        } else {
          return scenarioExecutionStartingRequest_;
        }
      }
      /**
       * <code>optional .main.ScenarioExecutionStartingRequest scenarioExecutionStartingRequest = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ScenarioExecutionStartingRequest, main.Messages.ScenarioExecutionStartingRequest.Builder, main.Messages.ScenarioExecutionStartingRequestOrBuilder> 
          getScenarioExecutionStartingRequestFieldBuilder() {
        if (scenarioExecutionStartingRequestBuilder_ == null) {
          scenarioExecutionStartingRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              main.Messages.ScenarioExecutionStartingRequest, main.Messages.ScenarioExecutionStartingRequest.Builder, main.Messages.ScenarioExecutionStartingRequestOrBuilder>(
                  scenarioExecutionStartingRequest_,
                  getParentForChildren(),
                  isClean());
          scenarioExecutionStartingRequest_ = null;
        }
        return scenarioExecutionStartingRequestBuilder_;
      }

      // optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;
      private main.Messages.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest_ = main.Messages.ScenarioExecutionEndingRequest.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ScenarioExecutionEndingRequest, main.Messages.ScenarioExecutionEndingRequest.Builder, main.Messages.ScenarioExecutionEndingRequestOrBuilder> scenarioExecutionEndingRequestBuilder_;
      /**
       * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
       */
      public boolean hasScenarioExecutionEndingRequest() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
       */
      public main.Messages.ScenarioExecutionEndingRequest getScenarioExecutionEndingRequest() {
        if (scenarioExecutionEndingRequestBuilder_ == null) {
          return scenarioExecutionEndingRequest_;
        } else {
          return scenarioExecutionEndingRequestBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
       */
      public Builder setScenarioExecutionEndingRequest(main.Messages.ScenarioExecutionEndingRequest value) {
        if (scenarioExecutionEndingRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          scenarioExecutionEndingRequest_ = value;
          onChanged();
        } else {
          scenarioExecutionEndingRequestBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
       */
      public Builder setScenarioExecutionEndingRequest(
          main.Messages.ScenarioExecutionEndingRequest.Builder builderForValue) {
        if (scenarioExecutionEndingRequestBuilder_ == null) {
          scenarioExecutionEndingRequest_ = builderForValue.build();
          onChanged();
        } else {
          scenarioExecutionEndingRequestBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
       */
      public Builder mergeScenarioExecutionEndingRequest(main.Messages.ScenarioExecutionEndingRequest value) {
        if (scenarioExecutionEndingRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040) &&
              scenarioExecutionEndingRequest_ != main.Messages.ScenarioExecutionEndingRequest.getDefaultInstance()) {
            scenarioExecutionEndingRequest_ =
              main.Messages.ScenarioExecutionEndingRequest.newBuilder(scenarioExecutionEndingRequest_).mergeFrom(value).buildPartial();
          } else {
            scenarioExecutionEndingRequest_ = value;
          }
          onChanged();
        } else {
          scenarioExecutionEndingRequestBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
       */
      public Builder clearScenarioExecutionEndingRequest() {
        if (scenarioExecutionEndingRequestBuilder_ == null) {
          scenarioExecutionEndingRequest_ = main.Messages.ScenarioExecutionEndingRequest.getDefaultInstance();
          onChanged();
        } else {
          scenarioExecutionEndingRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }
      /**
       * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
       */
      public main.Messages.ScenarioExecutionEndingRequest.Builder getScenarioExecutionEndingRequestBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getScenarioExecutionEndingRequestFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
       */
      public main.Messages.ScenarioExecutionEndingRequestOrBuilder getScenarioExecutionEndingRequestOrBuilder() {
        if (scenarioExecutionEndingRequestBuilder_ != null) {
          return scenarioExecutionEndingRequestBuilder_.getMessageOrBuilder();
        } else {
          return scenarioExecutionEndingRequest_;
        }
      }
      /**
       * <code>optional .main.ScenarioExecutionEndingRequest scenarioExecutionEndingRequest = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ScenarioExecutionEndingRequest, main.Messages.ScenarioExecutionEndingRequest.Builder, main.Messages.ScenarioExecutionEndingRequestOrBuilder> 
          getScenarioExecutionEndingRequestFieldBuilder() {
        if (scenarioExecutionEndingRequestBuilder_ == null) {
          scenarioExecutionEndingRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              main.Messages.ScenarioExecutionEndingRequest, main.Messages.ScenarioExecutionEndingRequest.Builder, main.Messages.ScenarioExecutionEndingRequestOrBuilder>(
                  scenarioExecutionEndingRequest_,
                  getParentForChildren(),
                  isClean());
          scenarioExecutionEndingRequest_ = null;
        }
        return scenarioExecutionEndingRequestBuilder_;
      }

      // optional .main.ExecuteStepRequest executeStepRequest = 8;
      private main.Messages.ExecuteStepRequest executeStepRequest_ = main.Messages.ExecuteStepRequest.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ExecuteStepRequest, main.Messages.ExecuteStepRequest.Builder, main.Messages.ExecuteStepRequestOrBuilder> executeStepRequestBuilder_;
      /**
       * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
       */
      public boolean hasExecuteStepRequest() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
       */
      public main.Messages.ExecuteStepRequest getExecuteStepRequest() {
        if (executeStepRequestBuilder_ == null) {
          return executeStepRequest_;
        } else {
          return executeStepRequestBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
       */
      public Builder setExecuteStepRequest(main.Messages.ExecuteStepRequest value) {
        if (executeStepRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          executeStepRequest_ = value;
          onChanged();
        } else {
          executeStepRequestBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
       */
      public Builder setExecuteStepRequest(
          main.Messages.ExecuteStepRequest.Builder builderForValue) {
        if (executeStepRequestBuilder_ == null) {
          executeStepRequest_ = builderForValue.build();
          onChanged();
        } else {
          executeStepRequestBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
       */
      public Builder mergeExecuteStepRequest(main.Messages.ExecuteStepRequest value) {
        if (executeStepRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000080) == 0x00000080) &&
              executeStepRequest_ != main.Messages.ExecuteStepRequest.getDefaultInstance()) {
            executeStepRequest_ =
              main.Messages.ExecuteStepRequest.newBuilder(executeStepRequest_).mergeFrom(value).buildPartial();
          } else {
            executeStepRequest_ = value;
          }
          onChanged();
        } else {
          executeStepRequestBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
       */
      public Builder clearExecuteStepRequest() {
        if (executeStepRequestBuilder_ == null) {
          executeStepRequest_ = main.Messages.ExecuteStepRequest.getDefaultInstance();
          onChanged();
        } else {
          executeStepRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }
      /**
       * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
       */
      public main.Messages.ExecuteStepRequest.Builder getExecuteStepRequestBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getExecuteStepRequestFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
       */
      public main.Messages.ExecuteStepRequestOrBuilder getExecuteStepRequestOrBuilder() {
        if (executeStepRequestBuilder_ != null) {
          return executeStepRequestBuilder_.getMessageOrBuilder();
        } else {
          return executeStepRequest_;
        }
      }
      /**
       * <code>optional .main.ExecuteStepRequest executeStepRequest = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ExecuteStepRequest, main.Messages.ExecuteStepRequest.Builder, main.Messages.ExecuteStepRequestOrBuilder> 
          getExecuteStepRequestFieldBuilder() {
        if (executeStepRequestBuilder_ == null) {
          executeStepRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              main.Messages.ExecuteStepRequest, main.Messages.ExecuteStepRequest.Builder, main.Messages.ExecuteStepRequestOrBuilder>(
                  executeStepRequest_,
                  getParentForChildren(),
                  isClean());
          executeStepRequest_ = null;
        }
        return executeStepRequestBuilder_;
      }

      // optional .main.ExecuteStepResponse executeStepResponse = 9;
      private main.Messages.ExecuteStepResponse executeStepResponse_ = main.Messages.ExecuteStepResponse.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ExecuteStepResponse, main.Messages.ExecuteStepResponse.Builder, main.Messages.ExecuteStepResponseOrBuilder> executeStepResponseBuilder_;
      /**
       * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
       */
      public boolean hasExecuteStepResponse() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
       */
      public main.Messages.ExecuteStepResponse getExecuteStepResponse() {
        if (executeStepResponseBuilder_ == null) {
          return executeStepResponse_;
        } else {
          return executeStepResponseBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
       */
      public Builder setExecuteStepResponse(main.Messages.ExecuteStepResponse value) {
        if (executeStepResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          executeStepResponse_ = value;
          onChanged();
        } else {
          executeStepResponseBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
       */
      public Builder setExecuteStepResponse(
          main.Messages.ExecuteStepResponse.Builder builderForValue) {
        if (executeStepResponseBuilder_ == null) {
          executeStepResponse_ = builderForValue.build();
          onChanged();
        } else {
          executeStepResponseBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
       */
      public Builder mergeExecuteStepResponse(main.Messages.ExecuteStepResponse value) {
        if (executeStepResponseBuilder_ == null) {
          if (((bitField0_ & 0x00000100) == 0x00000100) &&
              executeStepResponse_ != main.Messages.ExecuteStepResponse.getDefaultInstance()) {
            executeStepResponse_ =
              main.Messages.ExecuteStepResponse.newBuilder(executeStepResponse_).mergeFrom(value).buildPartial();
          } else {
            executeStepResponse_ = value;
          }
          onChanged();
        } else {
          executeStepResponseBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
       */
      public Builder clearExecuteStepResponse() {
        if (executeStepResponseBuilder_ == null) {
          executeStepResponse_ = main.Messages.ExecuteStepResponse.getDefaultInstance();
          onChanged();
        } else {
          executeStepResponseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }
      /**
       * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
       */
      public main.Messages.ExecuteStepResponse.Builder getExecuteStepResponseBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getExecuteStepResponseFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
       */
      public main.Messages.ExecuteStepResponseOrBuilder getExecuteStepResponseOrBuilder() {
        if (executeStepResponseBuilder_ != null) {
          return executeStepResponseBuilder_.getMessageOrBuilder();
        } else {
          return executeStepResponse_;
        }
      }
      /**
       * <code>optional .main.ExecuteStepResponse executeStepResponse = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ExecuteStepResponse, main.Messages.ExecuteStepResponse.Builder, main.Messages.ExecuteStepResponseOrBuilder> 
          getExecuteStepResponseFieldBuilder() {
        if (executeStepResponseBuilder_ == null) {
          executeStepResponseBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              main.Messages.ExecuteStepResponse, main.Messages.ExecuteStepResponse.Builder, main.Messages.ExecuteStepResponseOrBuilder>(
                  executeStepResponse_,
                  getParentForChildren(),
                  isClean());
          executeStepResponse_ = null;
        }
        return executeStepResponseBuilder_;
      }

      // optional .main.ExecutionEndingRequest executionEndingRequest = 10;
      private main.Messages.ExecutionEndingRequest executionEndingRequest_ = main.Messages.ExecutionEndingRequest.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ExecutionEndingRequest, main.Messages.ExecutionEndingRequest.Builder, main.Messages.ExecutionEndingRequestOrBuilder> executionEndingRequestBuilder_;
      /**
       * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
       */
      public boolean hasExecutionEndingRequest() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
       */
      public main.Messages.ExecutionEndingRequest getExecutionEndingRequest() {
        if (executionEndingRequestBuilder_ == null) {
          return executionEndingRequest_;
        } else {
          return executionEndingRequestBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
       */
      public Builder setExecutionEndingRequest(main.Messages.ExecutionEndingRequest value) {
        if (executionEndingRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          executionEndingRequest_ = value;
          onChanged();
        } else {
          executionEndingRequestBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
       */
      public Builder setExecutionEndingRequest(
          main.Messages.ExecutionEndingRequest.Builder builderForValue) {
        if (executionEndingRequestBuilder_ == null) {
          executionEndingRequest_ = builderForValue.build();
          onChanged();
        } else {
          executionEndingRequestBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
       */
      public Builder mergeExecutionEndingRequest(main.Messages.ExecutionEndingRequest value) {
        if (executionEndingRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000200) == 0x00000200) &&
              executionEndingRequest_ != main.Messages.ExecutionEndingRequest.getDefaultInstance()) {
            executionEndingRequest_ =
              main.Messages.ExecutionEndingRequest.newBuilder(executionEndingRequest_).mergeFrom(value).buildPartial();
          } else {
            executionEndingRequest_ = value;
          }
          onChanged();
        } else {
          executionEndingRequestBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
       */
      public Builder clearExecutionEndingRequest() {
        if (executionEndingRequestBuilder_ == null) {
          executionEndingRequest_ = main.Messages.ExecutionEndingRequest.getDefaultInstance();
          onChanged();
        } else {
          executionEndingRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000200);
        return this;
      }
      /**
       * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
       */
      public main.Messages.ExecutionEndingRequest.Builder getExecutionEndingRequestBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getExecutionEndingRequestFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
       */
      public main.Messages.ExecutionEndingRequestOrBuilder getExecutionEndingRequestOrBuilder() {
        if (executionEndingRequestBuilder_ != null) {
          return executionEndingRequestBuilder_.getMessageOrBuilder();
        } else {
          return executionEndingRequest_;
        }
      }
      /**
       * <code>optional .main.ExecutionEndingRequest executionEndingRequest = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ExecutionEndingRequest, main.Messages.ExecutionEndingRequest.Builder, main.Messages.ExecutionEndingRequestOrBuilder> 
          getExecutionEndingRequestFieldBuilder() {
        if (executionEndingRequestBuilder_ == null) {
          executionEndingRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              main.Messages.ExecutionEndingRequest, main.Messages.ExecutionEndingRequest.Builder, main.Messages.ExecutionEndingRequestOrBuilder>(
                  executionEndingRequest_,
                  getParentForChildren(),
                  isClean());
          executionEndingRequest_ = null;
        }
        return executionEndingRequestBuilder_;
      }

      // optional .main.StepValidateRequest stepValidateRequest = 11;
      private main.Messages.StepValidateRequest stepValidateRequest_ = main.Messages.StepValidateRequest.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.StepValidateRequest, main.Messages.StepValidateRequest.Builder, main.Messages.StepValidateRequestOrBuilder> stepValidateRequestBuilder_;
      /**
       * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
       */
      public boolean hasStepValidateRequest() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
       */
      public main.Messages.StepValidateRequest getStepValidateRequest() {
        if (stepValidateRequestBuilder_ == null) {
          return stepValidateRequest_;
        } else {
          return stepValidateRequestBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
       */
      public Builder setStepValidateRequest(main.Messages.StepValidateRequest value) {
        if (stepValidateRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          stepValidateRequest_ = value;
          onChanged();
        } else {
          stepValidateRequestBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
       */
      public Builder setStepValidateRequest(
          main.Messages.StepValidateRequest.Builder builderForValue) {
        if (stepValidateRequestBuilder_ == null) {
          stepValidateRequest_ = builderForValue.build();
          onChanged();
        } else {
          stepValidateRequestBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
       */
      public Builder mergeStepValidateRequest(main.Messages.StepValidateRequest value) {
        if (stepValidateRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000400) == 0x00000400) &&
              stepValidateRequest_ != main.Messages.StepValidateRequest.getDefaultInstance()) {
            stepValidateRequest_ =
              main.Messages.StepValidateRequest.newBuilder(stepValidateRequest_).mergeFrom(value).buildPartial();
          } else {
            stepValidateRequest_ = value;
          }
          onChanged();
        } else {
          stepValidateRequestBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
       */
      public Builder clearStepValidateRequest() {
        if (stepValidateRequestBuilder_ == null) {
          stepValidateRequest_ = main.Messages.StepValidateRequest.getDefaultInstance();
          onChanged();
        } else {
          stepValidateRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000400);
        return this;
      }
      /**
       * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
       */
      public main.Messages.StepValidateRequest.Builder getStepValidateRequestBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getStepValidateRequestFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
       */
      public main.Messages.StepValidateRequestOrBuilder getStepValidateRequestOrBuilder() {
        if (stepValidateRequestBuilder_ != null) {
          return stepValidateRequestBuilder_.getMessageOrBuilder();
        } else {
          return stepValidateRequest_;
        }
      }
      /**
       * <code>optional .main.StepValidateRequest stepValidateRequest = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.StepValidateRequest, main.Messages.StepValidateRequest.Builder, main.Messages.StepValidateRequestOrBuilder> 
          getStepValidateRequestFieldBuilder() {
        if (stepValidateRequestBuilder_ == null) {
          stepValidateRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              main.Messages.StepValidateRequest, main.Messages.StepValidateRequest.Builder, main.Messages.StepValidateRequestOrBuilder>(
                  stepValidateRequest_,
                  getParentForChildren(),
                  isClean());
          stepValidateRequest_ = null;
        }
        return stepValidateRequestBuilder_;
      }

      // optional .main.StepValidateResponse stepValidateResponse = 12;
      private main.Messages.StepValidateResponse stepValidateResponse_ = main.Messages.StepValidateResponse.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.StepValidateResponse, main.Messages.StepValidateResponse.Builder, main.Messages.StepValidateResponseOrBuilder> stepValidateResponseBuilder_;
      /**
       * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
       */
      public boolean hasStepValidateResponse() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
       */
      public main.Messages.StepValidateResponse getStepValidateResponse() {
        if (stepValidateResponseBuilder_ == null) {
          return stepValidateResponse_;
        } else {
          return stepValidateResponseBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
       */
      public Builder setStepValidateResponse(main.Messages.StepValidateResponse value) {
        if (stepValidateResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          stepValidateResponse_ = value;
          onChanged();
        } else {
          stepValidateResponseBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
       */
      public Builder setStepValidateResponse(
          main.Messages.StepValidateResponse.Builder builderForValue) {
        if (stepValidateResponseBuilder_ == null) {
          stepValidateResponse_ = builderForValue.build();
          onChanged();
        } else {
          stepValidateResponseBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
       */
      public Builder mergeStepValidateResponse(main.Messages.StepValidateResponse value) {
        if (stepValidateResponseBuilder_ == null) {
          if (((bitField0_ & 0x00000800) == 0x00000800) &&
              stepValidateResponse_ != main.Messages.StepValidateResponse.getDefaultInstance()) {
            stepValidateResponse_ =
              main.Messages.StepValidateResponse.newBuilder(stepValidateResponse_).mergeFrom(value).buildPartial();
          } else {
            stepValidateResponse_ = value;
          }
          onChanged();
        } else {
          stepValidateResponseBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
       */
      public Builder clearStepValidateResponse() {
        if (stepValidateResponseBuilder_ == null) {
          stepValidateResponse_ = main.Messages.StepValidateResponse.getDefaultInstance();
          onChanged();
        } else {
          stepValidateResponseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }
      /**
       * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
       */
      public main.Messages.StepValidateResponse.Builder getStepValidateResponseBuilder() {
        bitField0_ |= 0x00000800;
        onChanged();
        return getStepValidateResponseFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
       */
      public main.Messages.StepValidateResponseOrBuilder getStepValidateResponseOrBuilder() {
        if (stepValidateResponseBuilder_ != null) {
          return stepValidateResponseBuilder_.getMessageOrBuilder();
        } else {
          return stepValidateResponse_;
        }
      }
      /**
       * <code>optional .main.StepValidateResponse stepValidateResponse = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.StepValidateResponse, main.Messages.StepValidateResponse.Builder, main.Messages.StepValidateResponseOrBuilder> 
          getStepValidateResponseFieldBuilder() {
        if (stepValidateResponseBuilder_ == null) {
          stepValidateResponseBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              main.Messages.StepValidateResponse, main.Messages.StepValidateResponse.Builder, main.Messages.StepValidateResponseOrBuilder>(
                  stepValidateResponse_,
                  getParentForChildren(),
                  isClean());
          stepValidateResponse_ = null;
        }
        return stepValidateResponseBuilder_;
      }

      // optional .main.ExecutionStatusResponse executionStatusResponse = 13;
      private main.Messages.ExecutionStatusResponse executionStatusResponse_ = main.Messages.ExecutionStatusResponse.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ExecutionStatusResponse, main.Messages.ExecutionStatusResponse.Builder, main.Messages.ExecutionStatusResponseOrBuilder> executionStatusResponseBuilder_;
      /**
       * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
       */
      public boolean hasExecutionStatusResponse() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      /**
       * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
       */
      public main.Messages.ExecutionStatusResponse getExecutionStatusResponse() {
        if (executionStatusResponseBuilder_ == null) {
          return executionStatusResponse_;
        } else {
          return executionStatusResponseBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
       */
      public Builder setExecutionStatusResponse(main.Messages.ExecutionStatusResponse value) {
        if (executionStatusResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          executionStatusResponse_ = value;
          onChanged();
        } else {
          executionStatusResponseBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00001000;
        return this;
      }
      /**
       * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
       */
      public Builder setExecutionStatusResponse(
          main.Messages.ExecutionStatusResponse.Builder builderForValue) {
        if (executionStatusResponseBuilder_ == null) {
          executionStatusResponse_ = builderForValue.build();
          onChanged();
        } else {
          executionStatusResponseBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00001000;
        return this;
      }
      /**
       * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
       */
      public Builder mergeExecutionStatusResponse(main.Messages.ExecutionStatusResponse value) {
        if (executionStatusResponseBuilder_ == null) {
          if (((bitField0_ & 0x00001000) == 0x00001000) &&
              executionStatusResponse_ != main.Messages.ExecutionStatusResponse.getDefaultInstance()) {
            executionStatusResponse_ =
              main.Messages.ExecutionStatusResponse.newBuilder(executionStatusResponse_).mergeFrom(value).buildPartial();
          } else {
            executionStatusResponse_ = value;
          }
          onChanged();
        } else {
          executionStatusResponseBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00001000;
        return this;
      }
      /**
       * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
       */
      public Builder clearExecutionStatusResponse() {
        if (executionStatusResponseBuilder_ == null) {
          executionStatusResponse_ = main.Messages.ExecutionStatusResponse.getDefaultInstance();
          onChanged();
        } else {
          executionStatusResponseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00001000);
        return this;
      }
      /**
       * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
       */
      public main.Messages.ExecutionStatusResponse.Builder getExecutionStatusResponseBuilder() {
        bitField0_ |= 0x00001000;
        onChanged();
        return getExecutionStatusResponseFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
       */
      public main.Messages.ExecutionStatusResponseOrBuilder getExecutionStatusResponseOrBuilder() {
        if (executionStatusResponseBuilder_ != null) {
          return executionStatusResponseBuilder_.getMessageOrBuilder();
        } else {
          return executionStatusResponse_;
        }
      }
      /**
       * <code>optional .main.ExecutionStatusResponse executionStatusResponse = 13;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          main.Messages.ExecutionStatusResponse, main.Messages.ExecutionStatusResponse.Builder, main.Messages.ExecutionStatusResponseOrBuilder> 
          getExecutionStatusResponseFieldBuilder() {
        if (executionStatusResponseBuilder_ == null) {
          executionStatusResponseBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              main.Messages.ExecutionStatusResponse, main.Messages.ExecutionStatusResponse.Builder, main.Messages.ExecutionStatusResponseOrBuilder>(
                  executionStatusResponse_,
                  getParentForChildren(),
                  isClean());
          executionStatusResponse_ = null;
        }
        return executionStatusResponseBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:main.Message)
    }

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

    // @@protoc_insertion_point(class_scope:main.Message)
  }

  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_ExecutionStatus_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_ExecutionStatus_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_ExecutionStatusResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_ExecutionStatusResponse_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_ExecutionStartingRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_ExecutionStartingRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_SpecExecutionStartingRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_SpecExecutionStartingRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_SpecExecutionEndingRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_SpecExecutionEndingRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_ScenarioExecutionStartingRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_ScenarioExecutionStartingRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_ScenarioExecutionEndingRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_ScenarioExecutionEndingRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_ExecuteStepRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_ExecuteStepRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_ProtoTable_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_ProtoTable_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_TableRow_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_TableRow_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_Argument_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_Argument_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_ExecuteStepResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_ExecuteStepResponse_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_StepValidateRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_StepValidateRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_StepValidateResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_StepValidateResponse_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_ExecutionEndingRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_ExecutionEndingRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_main_Message_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_main_Message_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\016messages.proto\022\004main\"y\n\017ExecutionStatu" +
      "s\022\016\n\006passed\030\001 \002(\010\022\030\n\020recoverableError\030\002 " +
      "\001(\010\022\024\n\014errorMessage\030\003 \001(\t\022\022\n\nstackTrace\030" +
      "\004 \001(\t\022\022\n\nscreenShot\030\005 \001(\014\"I\n\027ExecutionSt" +
      "atusResponse\022.\n\017executionStatus\030\001 \002(\0132\025." +
      "main.ExecutionStatus\",\n\030ExecutionStartin" +
      "gRequest\022\020\n\010specFile\030\001 \002(\t\"B\n\034SpecExecut" +
      "ionStartingRequest\022\020\n\010specName\030\001 \002(\t\022\020\n\010" +
      "specFile\030\002 \002(\t\"@\n\032SpecExecutionEndingReq" +
      "uest\022\020\n\010specName\030\001 \002(\t\022\020\n\010specFile\030\002 \002(\t",
      "\"\"\n ScenarioExecutionStartingRequest\" \n\036" +
      "ScenarioExecutionEndingRequest\"]\n\022Execut" +
      "eStepRequest\022\020\n\010stepText\030\001 \002(\t\022\027\n\017scenar" +
      "ioFailing\030\002 \001(\010\022\034\n\004args\030\003 \003(\0132\016.main.Arg" +
      "ument\"*\n\nProtoTable\022\034\n\004rows\030\001 \003(\0132\016.main" +
      ".TableRow\"\031\n\010TableRow\022\r\n\005cells\030\001 \003(\t\"H\n\010" +
      "Argument\022\014\n\004type\030\001 \002(\t\022\r\n\005value\030\002 \001(\t\022\037\n" +
      "\005table\030\003 \001(\0132\020.main.ProtoTable\"}\n\023Execut" +
      "eStepResponse\022\016\n\006passed\030\002 \002(\010\022\030\n\020recover" +
      "ableError\030\003 \001(\010\022\024\n\014errorMessage\030\004 \001(\t\022\022\n",
      "\nstackTrace\030\005 \001(\t\022\022\n\nscreenShot\030\006 \001(\014\"\'\n" +
      "\023StepValidateRequest\022\020\n\010stepText\030\001 \002(\t\"\'" +
      "\n\024StepValidateResponse\022\017\n\007isValid\030\001 \002(\010\"" +
      "\030\n\026ExecutionEndingRequest\"\302\010\n\007Message\022.\n" +
      "\013messageType\030\001 \002(\0162\031.main.Message.Messag" +
      "eType\022\021\n\tmessageId\030\002 \002(\003\022@\n\030executionSta" +
      "rtingRequest\030\003 \001(\0132\036.main.ExecutionStart" +
      "ingRequest\022H\n\034specExecutionStartingReque" +
      "st\030\004 \001(\0132\".main.SpecExecutionStartingReq" +
      "uest\022D\n\032specExecutionEndingRequest\030\005 \001(\013",
      "2 .main.SpecExecutionEndingRequest\022P\n sc" +
      "enarioExecutionStartingRequest\030\006 \001(\0132&.m" +
      "ain.ScenarioExecutionStartingRequest\022L\n\036" +
      "scenarioExecutionEndingRequest\030\007 \001(\0132$.m" +
      "ain.ScenarioExecutionEndingRequest\0224\n\022ex" +
      "ecuteStepRequest\030\010 \001(\0132\030.main.ExecuteSte" +
      "pRequest\0226\n\023executeStepResponse\030\t \001(\0132\031." +
      "main.ExecuteStepResponse\022<\n\026executionEnd" +
      "ingRequest\030\n \001(\0132\034.main.ExecutionEndingR" +
      "equest\0226\n\023stepValidateRequest\030\013 \001(\0132\031.ma",
      "in.StepValidateRequest\0228\n\024stepValidateRe" +
      "sponse\030\014 \001(\0132\032.main.StepValidateResponse" +
      "\022>\n\027executionStatusResponse\030\r \001(\0132\035.main" +
      ".ExecutionStatusResponse\"\243\002\n\013MessageType" +
      "\022\025\n\021ExecutionStarting\020\000\022\031\n\025SpecExecution" +
      "Starting\020\001\022\027\n\023SpecExecutionEnding\020\002\022\035\n\031S" +
      "cenarioExecutionStarting\020\003\022\033\n\027ScenarioEx" +
      "ecutionEnding\020\004\022\017\n\013ExecuteStep\020\005\022\027\n\023Exec" +
      "uteStepResponse\020\006\022\023\n\017ExecutionEnding\020\007\022\027" +
      "\n\023StepValidateRequest\020\010\022\030\n\024StepValidateR",
      "esponse\020\t\022\033\n\027ExecutionStatusResponse\020\n"
    };
    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_main_ExecutionStatus_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_main_ExecutionStatus_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_ExecutionStatus_descriptor,
              new java.lang.String[] { "Passed", "RecoverableError", "ErrorMessage", "StackTrace", "ScreenShot", });
          internal_static_main_ExecutionStatusResponse_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_main_ExecutionStatusResponse_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_ExecutionStatusResponse_descriptor,
              new java.lang.String[] { "ExecutionStatus", });
          internal_static_main_ExecutionStartingRequest_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_main_ExecutionStartingRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_ExecutionStartingRequest_descriptor,
              new java.lang.String[] { "SpecFile", });
          internal_static_main_SpecExecutionStartingRequest_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_main_SpecExecutionStartingRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_SpecExecutionStartingRequest_descriptor,
              new java.lang.String[] { "SpecName", "SpecFile", });
          internal_static_main_SpecExecutionEndingRequest_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_main_SpecExecutionEndingRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_SpecExecutionEndingRequest_descriptor,
              new java.lang.String[] { "SpecName", "SpecFile", });
          internal_static_main_ScenarioExecutionStartingRequest_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_main_ScenarioExecutionStartingRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_ScenarioExecutionStartingRequest_descriptor,
              new java.lang.String[] { });
          internal_static_main_ScenarioExecutionEndingRequest_descriptor =
            getDescriptor().getMessageTypes().get(6);
          internal_static_main_ScenarioExecutionEndingRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_ScenarioExecutionEndingRequest_descriptor,
              new java.lang.String[] { });
          internal_static_main_ExecuteStepRequest_descriptor =
            getDescriptor().getMessageTypes().get(7);
          internal_static_main_ExecuteStepRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_ExecuteStepRequest_descriptor,
              new java.lang.String[] { "StepText", "ScenarioFailing", "Args", });
          internal_static_main_ProtoTable_descriptor =
            getDescriptor().getMessageTypes().get(8);
          internal_static_main_ProtoTable_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_ProtoTable_descriptor,
              new java.lang.String[] { "Rows", });
          internal_static_main_TableRow_descriptor =
            getDescriptor().getMessageTypes().get(9);
          internal_static_main_TableRow_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_TableRow_descriptor,
              new java.lang.String[] { "Cells", });
          internal_static_main_Argument_descriptor =
            getDescriptor().getMessageTypes().get(10);
          internal_static_main_Argument_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_Argument_descriptor,
              new java.lang.String[] { "Type", "Value", "Table", });
          internal_static_main_ExecuteStepResponse_descriptor =
            getDescriptor().getMessageTypes().get(11);
          internal_static_main_ExecuteStepResponse_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_ExecuteStepResponse_descriptor,
              new java.lang.String[] { "Passed", "RecoverableError", "ErrorMessage", "StackTrace", "ScreenShot", });
          internal_static_main_StepValidateRequest_descriptor =
            getDescriptor().getMessageTypes().get(12);
          internal_static_main_StepValidateRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_StepValidateRequest_descriptor,
              new java.lang.String[] { "StepText", });
          internal_static_main_StepValidateResponse_descriptor =
            getDescriptor().getMessageTypes().get(13);
          internal_static_main_StepValidateResponse_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_StepValidateResponse_descriptor,
              new java.lang.String[] { "IsValid", });
          internal_static_main_ExecutionEndingRequest_descriptor =
            getDescriptor().getMessageTypes().get(14);
          internal_static_main_ExecutionEndingRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_ExecutionEndingRequest_descriptor,
              new java.lang.String[] { });
          internal_static_main_Message_descriptor =
            getDescriptor().getMessageTypes().get(15);
          internal_static_main_Message_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_main_Message_descriptor,
              new java.lang.String[] { "MessageType", "MessageId", "ExecutionStartingRequest", "SpecExecutionStartingRequest", "SpecExecutionEndingRequest", "ScenarioExecutionStartingRequest", "ScenarioExecutionEndingRequest", "ExecuteStepRequest", "ExecuteStepResponse", "ExecutionEndingRequest", "StepValidateRequest", "StepValidateResponse", "ExecutionStatusResponse", });
          return null;
        }