org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfoOrBuilder getTerrainInfoOrBuilder();
  }
  /**
   * Protobuf type {@code messages.FrameMessage}
   */
  public static final class FrameMessage extends
      com.google.protobuf.GeneratedMessage
      implements FrameMessageOrBuilder {
    // Use FrameMessage.newBuilder() to construct.
    private FrameMessage(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FrameMessage(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public FrameMessage getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private FrameMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        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;
              frameCount_ = input.readInt32();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                bullets_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.Bullet>();
                mutable_bitField0_ |= 0x00000040;
              }
              bullets_.add(input.readMessage(org.bwapi.proxy.messages.GameMessages.Bullet.PARSER, extensionRegistry));
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              screenX_ = input.readInt32();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              screenY_ = input.readInt32();
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                units_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.Unit>();
                mutable_bitField0_ |= 0x00000020;
              }
              units_.add(input.readMessage(org.bwapi.proxy.messages.GameMessages.Unit.PARSER, extensionRegistry));
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                createdUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>();
                mutable_bitField0_ |= 0x00000100;
              }
              createdUnits_.add(input.readMessage(org.bwapi.proxy.messages.GameMessages.UnitId.PARSER, extensionRegistry));
              break;
            }
            case 66: {
              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                destroyedUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>();
                mutable_bitField0_ |= 0x00000200;
              }
              destroyedUnits_.add(input.readMessage(org.bwapi.proxy.messages.GameMessages.UnitId.PARSER, extensionRegistry));
              break;
            }
            case 74: {
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                morphedUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>();
                mutable_bitField0_ |= 0x00000400;
              }
              morphedUnits_.add(input.readMessage(org.bwapi.proxy.messages.GameMessages.UnitId.PARSER, extensionRegistry));
              break;
            }
            case 82: {
              if (!((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
                shownUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>();
                mutable_bitField0_ |= 0x00000800;
              }
              shownUnits_.add(input.readMessage(org.bwapi.proxy.messages.GameMessages.UnitId.PARSER, extensionRegistry));
              break;
            }
            case 90: {
              if (!((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
                hiddenUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>();
                mutable_bitField0_ |= 0x00001000;
              }
              hiddenUnits_.add(input.readMessage(org.bwapi.proxy.messages.GameMessages.UnitId.PARSER, extensionRegistry));
              break;
            }
            case 98: {
              if (!((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
                renegadedUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>();
                mutable_bitField0_ |= 0x00002000;
              }
              renegadedUnits_.add(input.readMessage(org.bwapi.proxy.messages.GameMessages.UnitId.PARSER, extensionRegistry));
              break;
            }
            case 106: {
              if (!((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
                sentText_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00020000;
              }
              sentText_.add(input.readBytes());
              break;
            }
            case 114: {
              org.bwapi.proxy.messages.BasicTypes.Position.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                subBuilder = nukeDetect_.toBuilder();
              }
              nukeDetect_ = input.readMessage(org.bwapi.proxy.messages.BasicTypes.Position.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(nukeDetect_);
                nukeDetect_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              break;
            }
            case 120: {
              bitField0_ |= 0x00000040;
              paused_ = input.readBool();
              break;
            }
            case 128: {
              bitField0_ |= 0x00000080;
              replay_ = input.readBool();
              break;
            }
            case 136: {
              bitField0_ |= 0x00000100;
              multiplayer_ = input.readBool();
              break;
            }
            case 146: {
              org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00002000) == 0x00002000)) {
                subBuilder = dynamicTerrainInfo_.toBuilder();
              }
              dynamicTerrainInfo_ = input.readMessage(org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(dynamicTerrainInfo_);
                dynamicTerrainInfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00002000;
              break;
            }
            case 154: {
              org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00004000) == 0x00004000)) {
                subBuilder = terrainInfo_.toBuilder();
              }
              terrainInfo_ = input.readMessage(org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(terrainInfo_);
                terrainInfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00004000;
              break;
            }
            case 162: {
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                players_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.Player>();
                mutable_bitField0_ |= 0x00000080;
              }
              players_.add(input.readMessage(org.bwapi.proxy.messages.GameMessages.Player.PARSER, extensionRegistry));
              break;
            }
            case 168: {
              if (!((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
                leftplayers_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00004000;
              }
              leftplayers_.add(input.readInt32());
              break;
            }
            case 170: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00004000) == 0x00004000) && input.getBytesUntilLimit() > 0) {
                leftplayers_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00004000;
              }
              while (input.getBytesUntilLimit() > 0) {
                leftplayers_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 178: {
              if (!((mutable_bitField0_ & 0x00008000) == 0x00008000)) {
                receivedTexts_ = new java.util.ArrayList<org.bwapi.proxy.messages.Messages.PlayerText>();
                mutable_bitField0_ |= 0x00008000;
              }
              receivedTexts_.add(input.readMessage(org.bwapi.proxy.messages.Messages.PlayerText.PARSER, extensionRegistry));
              break;
            }
            case 184: {
              bitField0_ |= 0x00000200;
              gameover_ = input.readBool();
              break;
            }
            case 194: {
              if (!((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
                selectedUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>();
                mutable_bitField0_ |= 0x00010000;
              }
              selectedUnits_.add(input.readMessage(org.bwapi.proxy.messages.GameMessages.UnitId.PARSER, extensionRegistry));
              break;
            }
            case 200: {
              bitField0_ |= 0x00000400;
              isWinner_ = input.readBool();
              break;
            }
            case 210: {
              org.bwapi.proxy.messages.BasicTypes.Position.Builder subBuilder = null;
              if (((bitField0_ & 0x00000800) == 0x00000800)) {
                subBuilder = screenPosition_.toBuilder();
              }
              screenPosition_ = input.readMessage(org.bwapi.proxy.messages.BasicTypes.Position.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(screenPosition_);
                screenPosition_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000800;
              break;
            }
            case 216: {
              bitField0_ |= 0x00000002;
              mouseX_ = input.readInt32();
              break;
            }
            case 224: {
              bitField0_ |= 0x00000004;
              mouseY_ = input.readInt32();
              break;
            }
            case 232: {
              bitField0_ |= 0x00001000;
              latency_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          bullets_ = java.util.Collections.unmodifiableList(bullets_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          units_ = java.util.Collections.unmodifiableList(units_);
        }
        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
          createdUnits_ = java.util.Collections.unmodifiableList(createdUnits_);
        }
        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
          destroyedUnits_ = java.util.Collections.unmodifiableList(destroyedUnits_);
        }
        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
          morphedUnits_ = java.util.Collections.unmodifiableList(morphedUnits_);
        }
        if (((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
          shownUnits_ = java.util.Collections.unmodifiableList(shownUnits_);
        }
        if (((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
          hiddenUnits_ = java.util.Collections.unmodifiableList(hiddenUnits_);
        }
        if (((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
          renegadedUnits_ = java.util.Collections.unmodifiableList(renegadedUnits_);
        }
        if (((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
          sentText_ = new com.google.protobuf.UnmodifiableLazyStringList(sentText_);
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          players_ = java.util.Collections.unmodifiableList(players_);
        }
        if (((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
          leftplayers_ = java.util.Collections.unmodifiableList(leftplayers_);
        }
        if (((mutable_bitField0_ & 0x00008000) == 0x00008000)) {
          receivedTexts_ = java.util.Collections.unmodifiableList(receivedTexts_);
        }
        if (((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
          selectedUnits_ = java.util.Collections.unmodifiableList(selectedUnits_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.bwapi.proxy.messages.Messages.internal_static_messages_FrameMessage_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.bwapi.proxy.messages.Messages.internal_static_messages_FrameMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.bwapi.proxy.messages.Messages.FrameMessage.class, org.bwapi.proxy.messages.Messages.FrameMessage.Builder.class);
    }

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

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

    private int bitField0_;
    // required int32 frameCount = 1;
    public static final int FRAMECOUNT_FIELD_NUMBER = 1;
    private int frameCount_;
    /**
     * <code>required int32 frameCount = 1;</code>
     */
    public boolean hasFrameCount() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 frameCount = 1;</code>
     */
    public int getFrameCount() {
      return frameCount_;
    }

    // required int32 mouseX = 27;
    public static final int MOUSEX_FIELD_NUMBER = 27;
    private int mouseX_;
    /**
     * <code>required int32 mouseX = 27;</code>
     */
    public boolean hasMouseX() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 mouseX = 27;</code>
     */
    public int getMouseX() {
      return mouseX_;
    }

    // required int32 mouseY = 28;
    public static final int MOUSEY_FIELD_NUMBER = 28;
    private int mouseY_;
    /**
     * <code>required int32 mouseY = 28;</code>
     */
    public boolean hasMouseY() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required int32 mouseY = 28;</code>
     */
    public int getMouseY() {
      return mouseY_;
    }

    // required int32 screenX = 4;
    public static final int SCREENX_FIELD_NUMBER = 4;
    private int screenX_;
    /**
     * <code>required int32 screenX = 4;</code>
     */
    public boolean hasScreenX() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required int32 screenX = 4;</code>
     */
    public int getScreenX() {
      return screenX_;
    }

    // required int32 screenY = 5;
    public static final int SCREENY_FIELD_NUMBER = 5;
    private int screenY_;
    /**
     * <code>required int32 screenY = 5;</code>
     */
    public boolean hasScreenY() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required int32 screenY = 5;</code>
     */
    public int getScreenY() {
      return screenY_;
    }

    // repeated .messages.Unit units = 6;
    public static final int UNITS_FIELD_NUMBER = 6;
    private java.util.List<org.bwapi.proxy.messages.GameMessages.Unit> units_;
    /**
     * <code>repeated .messages.Unit units = 6;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.GameMessages.Unit> getUnitsList() {
      return units_;
    }
    /**
     * <code>repeated .messages.Unit units = 6;</code>
     */
    public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitOrBuilder> 
        getUnitsOrBuilderList() {
      return units_;
    }
    /**
     * <code>repeated .messages.Unit units = 6;</code>
     */
    public int getUnitsCount() {
      return units_.size();
    }
    /**
     * <code>repeated .messages.Unit units = 6;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.Unit getUnits(int index) {
      return units_.get(index);
    }
    /**
     * <code>repeated .messages.Unit units = 6;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitOrBuilder getUnitsOrBuilder(
        int index) {
      return units_.get(index);
    }

    // repeated .messages.Bullet bullets = 3;
    public static final int BULLETS_FIELD_NUMBER = 3;
    private java.util.List<org.bwapi.proxy.messages.GameMessages.Bullet> bullets_;
    /**
     * <code>repeated .messages.Bullet bullets = 3;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.GameMessages.Bullet> getBulletsList() {
      return bullets_;
    }
    /**
     * <code>repeated .messages.Bullet bullets = 3;</code>
     */
    public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.BulletOrBuilder> 
        getBulletsOrBuilderList() {
      return bullets_;
    }
    /**
     * <code>repeated .messages.Bullet bullets = 3;</code>
     */
    public int getBulletsCount() {
      return bullets_.size();
    }
    /**
     * <code>repeated .messages.Bullet bullets = 3;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.Bullet getBullets(int index) {
      return bullets_.get(index);
    }
    /**
     * <code>repeated .messages.Bullet bullets = 3;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.BulletOrBuilder getBulletsOrBuilder(
        int index) {
      return bullets_.get(index);
    }

    // repeated .messages.Player players = 20;
    public static final int PLAYERS_FIELD_NUMBER = 20;
    private java.util.List<org.bwapi.proxy.messages.GameMessages.Player> players_;
    /**
     * <code>repeated .messages.Player players = 20;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.GameMessages.Player> getPlayersList() {
      return players_;
    }
    /**
     * <code>repeated .messages.Player players = 20;</code>
     */
    public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.PlayerOrBuilder> 
        getPlayersOrBuilderList() {
      return players_;
    }
    /**
     * <code>repeated .messages.Player players = 20;</code>
     */
    public int getPlayersCount() {
      return players_.size();
    }
    /**
     * <code>repeated .messages.Player players = 20;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.Player getPlayers(int index) {
      return players_.get(index);
    }
    /**
     * <code>repeated .messages.Player players = 20;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.PlayerOrBuilder getPlayersOrBuilder(
        int index) {
      return players_.get(index);
    }

    // repeated .messages.UnitId createdUnits = 7;
    public static final int CREATEDUNITS_FIELD_NUMBER = 7;
    private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> createdUnits_;
    /**
     * <code>repeated .messages.UnitId createdUnits = 7;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getCreatedUnitsList() {
      return createdUnits_;
    }
    /**
     * <code>repeated .messages.UnitId createdUnits = 7;</code>
     */
    public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
        getCreatedUnitsOrBuilderList() {
      return createdUnits_;
    }
    /**
     * <code>repeated .messages.UnitId createdUnits = 7;</code>
     */
    public int getCreatedUnitsCount() {
      return createdUnits_.size();
    }
    /**
     * <code>repeated .messages.UnitId createdUnits = 7;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitId getCreatedUnits(int index) {
      return createdUnits_.get(index);
    }
    /**
     * <code>repeated .messages.UnitId createdUnits = 7;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getCreatedUnitsOrBuilder(
        int index) {
      return createdUnits_.get(index);
    }

    // repeated .messages.UnitId destroyedUnits = 8;
    public static final int DESTROYEDUNITS_FIELD_NUMBER = 8;
    private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> destroyedUnits_;
    /**
     * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getDestroyedUnitsList() {
      return destroyedUnits_;
    }
    /**
     * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
     */
    public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
        getDestroyedUnitsOrBuilderList() {
      return destroyedUnits_;
    }
    /**
     * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
     */
    public int getDestroyedUnitsCount() {
      return destroyedUnits_.size();
    }
    /**
     * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitId getDestroyedUnits(int index) {
      return destroyedUnits_.get(index);
    }
    /**
     * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getDestroyedUnitsOrBuilder(
        int index) {
      return destroyedUnits_.get(index);
    }

    // repeated .messages.UnitId morphedUnits = 9;
    public static final int MORPHEDUNITS_FIELD_NUMBER = 9;
    private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> morphedUnits_;
    /**
     * <code>repeated .messages.UnitId morphedUnits = 9;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getMorphedUnitsList() {
      return morphedUnits_;
    }
    /**
     * <code>repeated .messages.UnitId morphedUnits = 9;</code>
     */
    public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
        getMorphedUnitsOrBuilderList() {
      return morphedUnits_;
    }
    /**
     * <code>repeated .messages.UnitId morphedUnits = 9;</code>
     */
    public int getMorphedUnitsCount() {
      return morphedUnits_.size();
    }
    /**
     * <code>repeated .messages.UnitId morphedUnits = 9;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitId getMorphedUnits(int index) {
      return morphedUnits_.get(index);
    }
    /**
     * <code>repeated .messages.UnitId morphedUnits = 9;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getMorphedUnitsOrBuilder(
        int index) {
      return morphedUnits_.get(index);
    }

    // repeated .messages.UnitId shownUnits = 10;
    public static final int SHOWNUNITS_FIELD_NUMBER = 10;
    private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> shownUnits_;
    /**
     * <code>repeated .messages.UnitId shownUnits = 10;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getShownUnitsList() {
      return shownUnits_;
    }
    /**
     * <code>repeated .messages.UnitId shownUnits = 10;</code>
     */
    public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
        getShownUnitsOrBuilderList() {
      return shownUnits_;
    }
    /**
     * <code>repeated .messages.UnitId shownUnits = 10;</code>
     */
    public int getShownUnitsCount() {
      return shownUnits_.size();
    }
    /**
     * <code>repeated .messages.UnitId shownUnits = 10;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitId getShownUnits(int index) {
      return shownUnits_.get(index);
    }
    /**
     * <code>repeated .messages.UnitId shownUnits = 10;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getShownUnitsOrBuilder(
        int index) {
      return shownUnits_.get(index);
    }

    // repeated .messages.UnitId hiddenUnits = 11;
    public static final int HIDDENUNITS_FIELD_NUMBER = 11;
    private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> hiddenUnits_;
    /**
     * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getHiddenUnitsList() {
      return hiddenUnits_;
    }
    /**
     * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
     */
    public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
        getHiddenUnitsOrBuilderList() {
      return hiddenUnits_;
    }
    /**
     * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
     */
    public int getHiddenUnitsCount() {
      return hiddenUnits_.size();
    }
    /**
     * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitId getHiddenUnits(int index) {
      return hiddenUnits_.get(index);
    }
    /**
     * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getHiddenUnitsOrBuilder(
        int index) {
      return hiddenUnits_.get(index);
    }

    // repeated .messages.UnitId renegadedUnits = 12;
    public static final int RENEGADEDUNITS_FIELD_NUMBER = 12;
    private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> renegadedUnits_;
    /**
     * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getRenegadedUnitsList() {
      return renegadedUnits_;
    }
    /**
     * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
     */
    public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
        getRenegadedUnitsOrBuilderList() {
      return renegadedUnits_;
    }
    /**
     * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
     */
    public int getRenegadedUnitsCount() {
      return renegadedUnits_.size();
    }
    /**
     * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitId getRenegadedUnits(int index) {
      return renegadedUnits_.get(index);
    }
    /**
     * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getRenegadedUnitsOrBuilder(
        int index) {
      return renegadedUnits_.get(index);
    }

    // repeated int32 leftplayers = 21;
    public static final int LEFTPLAYERS_FIELD_NUMBER = 21;
    private java.util.List<java.lang.Integer> leftplayers_;
    /**
     * <code>repeated int32 leftplayers = 21;</code>
     */
    public java.util.List<java.lang.Integer>
        getLeftplayersList() {
      return leftplayers_;
    }
    /**
     * <code>repeated int32 leftplayers = 21;</code>
     */
    public int getLeftplayersCount() {
      return leftplayers_.size();
    }
    /**
     * <code>repeated int32 leftplayers = 21;</code>
     */
    public int getLeftplayers(int index) {
      return leftplayers_.get(index);
    }

    // repeated .messages.PlayerText receivedTexts = 22;
    public static final int RECEIVEDTEXTS_FIELD_NUMBER = 22;
    private java.util.List<org.bwapi.proxy.messages.Messages.PlayerText> receivedTexts_;
    /**
     * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.Messages.PlayerText> getReceivedTextsList() {
      return receivedTexts_;
    }
    /**
     * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
     */
    public java.util.List<? extends org.bwapi.proxy.messages.Messages.PlayerTextOrBuilder> 
        getReceivedTextsOrBuilderList() {
      return receivedTexts_;
    }
    /**
     * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
     */
    public int getReceivedTextsCount() {
      return receivedTexts_.size();
    }
    /**
     * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
     */
    public org.bwapi.proxy.messages.Messages.PlayerText getReceivedTexts(int index) {
      return receivedTexts_.get(index);
    }
    /**
     * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
     */
    public org.bwapi.proxy.messages.Messages.PlayerTextOrBuilder getReceivedTextsOrBuilder(
        int index) {
      return receivedTexts_.get(index);
    }

    // repeated .messages.UnitId selectedUnits = 24;
    public static final int SELECTEDUNITS_FIELD_NUMBER = 24;
    private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> selectedUnits_;
    /**
     * <code>repeated .messages.UnitId selectedUnits = 24;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getSelectedUnitsList() {
      return selectedUnits_;
    }
    /**
     * <code>repeated .messages.UnitId selectedUnits = 24;</code>
     */
    public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
        getSelectedUnitsOrBuilderList() {
      return selectedUnits_;
    }
    /**
     * <code>repeated .messages.UnitId selectedUnits = 24;</code>
     */
    public int getSelectedUnitsCount() {
      return selectedUnits_.size();
    }
    /**
     * <code>repeated .messages.UnitId selectedUnits = 24;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitId getSelectedUnits(int index) {
      return selectedUnits_.get(index);
    }
    /**
     * <code>repeated .messages.UnitId selectedUnits = 24;</code>
     */
    public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getSelectedUnitsOrBuilder(
        int index) {
      return selectedUnits_.get(index);
    }

    // repeated string sentText = 13;
    public static final int SENTTEXT_FIELD_NUMBER = 13;
    private com.google.protobuf.LazyStringList sentText_;
    /**
     * <code>repeated string sentText = 13;</code>
     */
    public java.util.List<java.lang.String>
        getSentTextList() {
      return sentText_;
    }
    /**
     * <code>repeated string sentText = 13;</code>
     */
    public int getSentTextCount() {
      return sentText_.size();
    }
    /**
     * <code>repeated string sentText = 13;</code>
     */
    public java.lang.String getSentText(int index) {
      return sentText_.get(index);
    }
    /**
     * <code>repeated string sentText = 13;</code>
     */
    public com.google.protobuf.ByteString
        getSentTextBytes(int index) {
      return sentText_.getByteString(index);
    }

    // optional .messages.Position nukeDetect = 14;
    public static final int NUKEDETECT_FIELD_NUMBER = 14;
    private org.bwapi.proxy.messages.BasicTypes.Position nukeDetect_;
    /**
     * <code>optional .messages.Position nukeDetect = 14;</code>
     */
    public boolean hasNukeDetect() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional .messages.Position nukeDetect = 14;</code>
     */
    public org.bwapi.proxy.messages.BasicTypes.Position getNukeDetect() {
      return nukeDetect_;
    }
    /**
     * <code>optional .messages.Position nukeDetect = 14;</code>
     */
    public org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder getNukeDetectOrBuilder() {
      return nukeDetect_;
    }

    // required bool paused = 15;
    public static final int PAUSED_FIELD_NUMBER = 15;
    private boolean paused_;
    /**
     * <code>required bool paused = 15;</code>
     */
    public boolean hasPaused() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>required bool paused = 15;</code>
     */
    public boolean getPaused() {
      return paused_;
    }

    // required bool replay = 16;
    public static final int REPLAY_FIELD_NUMBER = 16;
    private boolean replay_;
    /**
     * <code>required bool replay = 16;</code>
     */
    public boolean hasReplay() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>required bool replay = 16;</code>
     */
    public boolean getReplay() {
      return replay_;
    }

    // required bool multiplayer = 17;
    public static final int MULTIPLAYER_FIELD_NUMBER = 17;
    private boolean multiplayer_;
    /**
     * <code>required bool multiplayer = 17;</code>
     */
    public boolean hasMultiplayer() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>required bool multiplayer = 17;</code>
     */
    public boolean getMultiplayer() {
      return multiplayer_;
    }

    // optional bool gameover = 23;
    public static final int GAMEOVER_FIELD_NUMBER = 23;
    private boolean gameover_;
    /**
     * <code>optional bool gameover = 23;</code>
     */
    public boolean hasGameover() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <code>optional bool gameover = 23;</code>
     */
    public boolean getGameover() {
      return gameover_;
    }

    // optional bool isWinner = 25;
    public static final int ISWINNER_FIELD_NUMBER = 25;
    private boolean isWinner_;
    /**
     * <code>optional bool isWinner = 25;</code>
     */
    public boolean hasIsWinner() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    /**
     * <code>optional bool isWinner = 25;</code>
     */
    public boolean getIsWinner() {
      return isWinner_;
    }

    // required .messages.Position screenPosition = 26;
    public static final int SCREENPOSITION_FIELD_NUMBER = 26;
    private org.bwapi.proxy.messages.BasicTypes.Position screenPosition_;
    /**
     * <code>required .messages.Position screenPosition = 26;</code>
     */
    public boolean hasScreenPosition() {
      return ((bitField0_ & 0x00000800) == 0x00000800);
    }
    /**
     * <code>required .messages.Position screenPosition = 26;</code>
     */
    public org.bwapi.proxy.messages.BasicTypes.Position getScreenPosition() {
      return screenPosition_;
    }
    /**
     * <code>required .messages.Position screenPosition = 26;</code>
     */
    public org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder getScreenPositionOrBuilder() {
      return screenPosition_;
    }

    // required int32 latency = 29;
    public static final int LATENCY_FIELD_NUMBER = 29;
    private int latency_;
    /**
     * <code>required int32 latency = 29;</code>
     */
    public boolean hasLatency() {
      return ((bitField0_ & 0x00001000) == 0x00001000);
    }
    /**
     * <code>required int32 latency = 29;</code>
     */
    public int getLatency() {
      return latency_;
    }

    // required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;
    public static final int DYNAMICTERRAININFO_FIELD_NUMBER = 18;
    private org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo dynamicTerrainInfo_;
    /**
     * <code>required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;</code>
     */
    public boolean hasDynamicTerrainInfo() {
      return ((bitField0_ & 0x00002000) == 0x00002000);
    }
    /**
     * <code>required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;</code>
     */
    public org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo getDynamicTerrainInfo() {
      return dynamicTerrainInfo_;
    }
    /**
     * <code>required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;</code>
     */
    public org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfoOrBuilder getDynamicTerrainInfoOrBuilder() {
      return dynamicTerrainInfo_;
    }

    // optional .messages.StaticTerrainInfo terrainInfo = 19;
    public static final int TERRAININFO_FIELD_NUMBER = 19;
    private org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo terrainInfo_;
    /**
     * <code>optional .messages.StaticTerrainInfo terrainInfo = 19;</code>
     */
    public boolean hasTerrainInfo() {
      return ((bitField0_ & 0x00004000) == 0x00004000);
    }
    /**
     * <code>optional .messages.StaticTerrainInfo terrainInfo = 19;</code>
     */
    public org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo getTerrainInfo() {
      return terrainInfo_;
    }
    /**
     * <code>optional .messages.StaticTerrainInfo terrainInfo = 19;</code>
     */
    public org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfoOrBuilder getTerrainInfoOrBuilder() {
      return terrainInfo_;
    }

    private void initFields() {
      frameCount_ = 0;
      mouseX_ = 0;
      mouseY_ = 0;
      screenX_ = 0;
      screenY_ = 0;
      units_ = java.util.Collections.emptyList();
      bullets_ = java.util.Collections.emptyList();
      players_ = java.util.Collections.emptyList();
      createdUnits_ = java.util.Collections.emptyList();
      destroyedUnits_ = java.util.Collections.emptyList();
      morphedUnits_ = java.util.Collections.emptyList();
      shownUnits_ = java.util.Collections.emptyList();
      hiddenUnits_ = java.util.Collections.emptyList();
      renegadedUnits_ = java.util.Collections.emptyList();
      leftplayers_ = java.util.Collections.emptyList();
      receivedTexts_ = java.util.Collections.emptyList();
      selectedUnits_ = java.util.Collections.emptyList();
      sentText_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      nukeDetect_ = org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance();
      paused_ = false;
      replay_ = false;
      multiplayer_ = false;
      gameover_ = false;
      isWinner_ = false;
      screenPosition_ = org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance();
      latency_ = 0;
      dynamicTerrainInfo_ = org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo.getDefaultInstance();
      terrainInfo_ = org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasFrameCount()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMouseX()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMouseY()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasScreenX()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasScreenY()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasPaused()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasReplay()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMultiplayer()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasScreenPosition()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasLatency()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasDynamicTerrainInfo()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getUnitsCount(); i++) {
        if (!getUnits(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getBulletsCount(); i++) {
        if (!getBullets(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getPlayersCount(); i++) {
        if (!getPlayers(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getCreatedUnitsCount(); i++) {
        if (!getCreatedUnits(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getDestroyedUnitsCount(); i++) {
        if (!getDestroyedUnits(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getMorphedUnitsCount(); i++) {
        if (!getMorphedUnits(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getShownUnitsCount(); i++) {
        if (!getShownUnits(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getHiddenUnitsCount(); i++) {
        if (!getHiddenUnits(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getRenegadedUnitsCount(); i++) {
        if (!getRenegadedUnits(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getReceivedTextsCount(); i++) {
        if (!getReceivedTexts(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getSelectedUnitsCount(); i++) {
        if (!getSelectedUnits(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasNukeDetect()) {
        if (!getNukeDetect().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getScreenPosition().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasTerrainInfo()) {
        if (!getTerrainInfo().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.writeInt32(1, frameCount_);
      }
      for (int i = 0; i < bullets_.size(); i++) {
        output.writeMessage(3, bullets_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(4, screenX_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt32(5, screenY_);
      }
      for (int i = 0; i < units_.size(); i++) {
        output.writeMessage(6, units_.get(i));
      }
      for (int i = 0; i < createdUnits_.size(); i++) {
        output.writeMessage(7, createdUnits_.get(i));
      }
      for (int i = 0; i < destroyedUnits_.size(); i++) {
        output.writeMessage(8, destroyedUnits_.get(i));
      }
      for (int i = 0; i < morphedUnits_.size(); i++) {
        output.writeMessage(9, morphedUnits_.get(i));
      }
      for (int i = 0; i < shownUnits_.size(); i++) {
        output.writeMessage(10, shownUnits_.get(i));
      }
      for (int i = 0; i < hiddenUnits_.size(); i++) {
        output.writeMessage(11, hiddenUnits_.get(i));
      }
      for (int i = 0; i < renegadedUnits_.size(); i++) {
        output.writeMessage(12, renegadedUnits_.get(i));
      }
      for (int i = 0; i < sentText_.size(); i++) {
        output.writeBytes(13, sentText_.getByteString(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(14, nukeDetect_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBool(15, paused_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeBool(16, replay_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeBool(17, multiplayer_);
      }
      if (((bitField0_ & 0x00002000) == 0x00002000)) {
        output.writeMessage(18, dynamicTerrainInfo_);
      }
      if (((bitField0_ & 0x00004000) == 0x00004000)) {
        output.writeMessage(19, terrainInfo_);
      }
      for (int i = 0; i < players_.size(); i++) {
        output.writeMessage(20, players_.get(i));
      }
      for (int i = 0; i < leftplayers_.size(); i++) {
        output.writeInt32(21, leftplayers_.get(i));
      }
      for (int i = 0; i < receivedTexts_.size(); i++) {
        output.writeMessage(22, receivedTexts_.get(i));
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeBool(23, gameover_);
      }
      for (int i = 0; i < selectedUnits_.size(); i++) {
        output.writeMessage(24, selectedUnits_.get(i));
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeBool(25, isWinner_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        output.writeMessage(26, screenPosition_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(27, mouseX_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(28, mouseY_);
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        output.writeInt32(29, latency_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, frameCount_);
      }
      for (int i = 0; i < bullets_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, bullets_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, screenX_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, screenY_);
      }
      for (int i = 0; i < units_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, units_.get(i));
      }
      for (int i = 0; i < createdUnits_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, createdUnits_.get(i));
      }
      for (int i = 0; i < destroyedUnits_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, destroyedUnits_.get(i));
      }
      for (int i = 0; i < morphedUnits_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, morphedUnits_.get(i));
      }
      for (int i = 0; i < shownUnits_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, shownUnits_.get(i));
      }
      for (int i = 0; i < hiddenUnits_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, hiddenUnits_.get(i));
      }
      for (int i = 0; i < renegadedUnits_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, renegadedUnits_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < sentText_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(sentText_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getSentTextList().size();
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, nukeDetect_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(15, paused_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(16, replay_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(17, multiplayer_);
      }
      if (((bitField0_ & 0x00002000) == 0x00002000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, dynamicTerrainInfo_);
      }
      if (((bitField0_ & 0x00004000) == 0x00004000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(19, terrainInfo_);
      }
      for (int i = 0; i < players_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(20, players_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < leftplayers_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(leftplayers_.get(i));
        }
        size += dataSize;
        size += 2 * getLeftplayersList().size();
      }
      for (int i = 0; i < receivedTexts_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(22, receivedTexts_.get(i));
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(23, gameover_);
      }
      for (int i = 0; i < selectedUnits_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(24, selectedUnits_.get(i));
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(25, isWinner_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(26, screenPosition_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(27, mouseX_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(28, mouseY_);
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(29, latency_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

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

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

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.bwapi.proxy.messages.Messages.FrameMessage prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code messages.FrameMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.bwapi.proxy.messages.Messages.FrameMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.bwapi.proxy.messages.Messages.internal_static_messages_FrameMessage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.bwapi.proxy.messages.Messages.internal_static_messages_FrameMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.bwapi.proxy.messages.Messages.FrameMessage.class, org.bwapi.proxy.messages.Messages.FrameMessage.Builder.class);
      }

      // Construct using org.bwapi.proxy.messages.Messages.FrameMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getUnitsFieldBuilder();
          getBulletsFieldBuilder();
          getPlayersFieldBuilder();
          getCreatedUnitsFieldBuilder();
          getDestroyedUnitsFieldBuilder();
          getMorphedUnitsFieldBuilder();
          getShownUnitsFieldBuilder();
          getHiddenUnitsFieldBuilder();
          getRenegadedUnitsFieldBuilder();
          getReceivedTextsFieldBuilder();
          getSelectedUnitsFieldBuilder();
          getNukeDetectFieldBuilder();
          getScreenPositionFieldBuilder();
          getDynamicTerrainInfoFieldBuilder();
          getTerrainInfoFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        frameCount_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        mouseX_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        mouseY_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        screenX_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        screenY_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        if (unitsBuilder_ == null) {
          units_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
        } else {
          unitsBuilder_.clear();
        }
        if (bulletsBuilder_ == null) {
          bullets_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
        } else {
          bulletsBuilder_.clear();
        }
        if (playersBuilder_ == null) {
          players_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
        } else {
          playersBuilder_.clear();
        }
        if (createdUnitsBuilder_ == null) {
          createdUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
        } else {
          createdUnitsBuilder_.clear();
        }
        if (destroyedUnitsBuilder_ == null) {
          destroyedUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
        } else {
          destroyedUnitsBuilder_.clear();
        }
        if (morphedUnitsBuilder_ == null) {
          morphedUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
        } else {
          morphedUnitsBuilder_.clear();
        }
        if (shownUnitsBuilder_ == null) {
          shownUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
        } else {
          shownUnitsBuilder_.clear();
        }
        if (hiddenUnitsBuilder_ == null) {
          hiddenUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00001000);
        } else {
          hiddenUnitsBuilder_.clear();
        }
        if (renegadedUnitsBuilder_ == null) {
          renegadedUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
        } else {
          renegadedUnitsBuilder_.clear();
        }
        leftplayers_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00004000);
        if (receivedTextsBuilder_ == null) {
          receivedTexts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00008000);
        } else {
          receivedTextsBuilder_.clear();
        }
        if (selectedUnitsBuilder_ == null) {
          selectedUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00010000);
        } else {
          selectedUnitsBuilder_.clear();
        }
        sentText_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00020000);
        if (nukeDetectBuilder_ == null) {
          nukeDetect_ = org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance();
        } else {
          nukeDetectBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00040000);
        paused_ = false;
        bitField0_ = (bitField0_ & ~0x00080000);
        replay_ = false;
        bitField0_ = (bitField0_ & ~0x00100000);
        multiplayer_ = false;
        bitField0_ = (bitField0_ & ~0x00200000);
        gameover_ = false;
        bitField0_ = (bitField0_ & ~0x00400000);
        isWinner_ = false;
        bitField0_ = (bitField0_ & ~0x00800000);
        if (screenPositionBuilder_ == null) {
          screenPosition_ = org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance();
        } else {
          screenPositionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x01000000);
        latency_ = 0;
        bitField0_ = (bitField0_ & ~0x02000000);
        if (dynamicTerrainInfoBuilder_ == null) {
          dynamicTerrainInfo_ = org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo.getDefaultInstance();
        } else {
          dynamicTerrainInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x04000000);
        if (terrainInfoBuilder_ == null) {
          terrainInfo_ = org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.getDefaultInstance();
        } else {
          terrainInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x08000000);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.bwapi.proxy.messages.Messages.internal_static_messages_FrameMessage_descriptor;
      }

      public org.bwapi.proxy.messages.Messages.FrameMessage getDefaultInstanceForType() {
        return org.bwapi.proxy.messages.Messages.FrameMessage.getDefaultInstance();
      }

      public org.bwapi.proxy.messages.Messages.FrameMessage build() {
        org.bwapi.proxy.messages.Messages.FrameMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.bwapi.proxy.messages.Messages.FrameMessage buildPartial() {
        org.bwapi.proxy.messages.Messages.FrameMessage result = new org.bwapi.proxy.messages.Messages.FrameMessage(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.frameCount_ = frameCount_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.mouseX_ = mouseX_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.mouseY_ = mouseY_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.screenX_ = screenX_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.screenY_ = screenY_;
        if (unitsBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            units_ = java.util.Collections.unmodifiableList(units_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.units_ = units_;
        } else {
          result.units_ = unitsBuilder_.build();
        }
        if (bulletsBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            bullets_ = java.util.Collections.unmodifiableList(bullets_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.bullets_ = bullets_;
        } else {
          result.bullets_ = bulletsBuilder_.build();
        }
        if (playersBuilder_ == null) {
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            players_ = java.util.Collections.unmodifiableList(players_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.players_ = players_;
        } else {
          result.players_ = playersBuilder_.build();
        }
        if (createdUnitsBuilder_ == null) {
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            createdUnits_ = java.util.Collections.unmodifiableList(createdUnits_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.createdUnits_ = createdUnits_;
        } else {
          result.createdUnits_ = createdUnitsBuilder_.build();
        }
        if (destroyedUnitsBuilder_ == null) {
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            destroyedUnits_ = java.util.Collections.unmodifiableList(destroyedUnits_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.destroyedUnits_ = destroyedUnits_;
        } else {
          result.destroyedUnits_ = destroyedUnitsBuilder_.build();
        }
        if (morphedUnitsBuilder_ == null) {
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            morphedUnits_ = java.util.Collections.unmodifiableList(morphedUnits_);
            bitField0_ = (bitField0_ & ~0x00000400);
          }
          result.morphedUnits_ = morphedUnits_;
        } else {
          result.morphedUnits_ = morphedUnitsBuilder_.build();
        }
        if (shownUnitsBuilder_ == null) {
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            shownUnits_ = java.util.Collections.unmodifiableList(shownUnits_);
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.shownUnits_ = shownUnits_;
        } else {
          result.shownUnits_ = shownUnitsBuilder_.build();
        }
        if (hiddenUnitsBuilder_ == null) {
          if (((bitField0_ & 0x00001000) == 0x00001000)) {
            hiddenUnits_ = java.util.Collections.unmodifiableList(hiddenUnits_);
            bitField0_ = (bitField0_ & ~0x00001000);
          }
          result.hiddenUnits_ = hiddenUnits_;
        } else {
          result.hiddenUnits_ = hiddenUnitsBuilder_.build();
        }
        if (renegadedUnitsBuilder_ == null) {
          if (((bitField0_ & 0x00002000) == 0x00002000)) {
            renegadedUnits_ = java.util.Collections.unmodifiableList(renegadedUnits_);
            bitField0_ = (bitField0_ & ~0x00002000);
          }
          result.renegadedUnits_ = renegadedUnits_;
        } else {
          result.renegadedUnits_ = renegadedUnitsBuilder_.build();
        }
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          leftplayers_ = java.util.Collections.unmodifiableList(leftplayers_);
          bitField0_ = (bitField0_ & ~0x00004000);
        }
        result.leftplayers_ = leftplayers_;
        if (receivedTextsBuilder_ == null) {
          if (((bitField0_ & 0x00008000) == 0x00008000)) {
            receivedTexts_ = java.util.Collections.unmodifiableList(receivedTexts_);
            bitField0_ = (bitField0_ & ~0x00008000);
          }
          result.receivedTexts_ = receivedTexts_;
        } else {
          result.receivedTexts_ = receivedTextsBuilder_.build();
        }
        if (selectedUnitsBuilder_ == null) {
          if (((bitField0_ & 0x00010000) == 0x00010000)) {
            selectedUnits_ = java.util.Collections.unmodifiableList(selectedUnits_);
            bitField0_ = (bitField0_ & ~0x00010000);
          }
          result.selectedUnits_ = selectedUnits_;
        } else {
          result.selectedUnits_ = selectedUnitsBuilder_.build();
        }
        if (((bitField0_ & 0x00020000) == 0x00020000)) {
          sentText_ = new com.google.protobuf.UnmodifiableLazyStringList(
              sentText_);
          bitField0_ = (bitField0_ & ~0x00020000);
        }
        result.sentText_ = sentText_;
        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
          to_bitField0_ |= 0x00000020;
        }
        if (nukeDetectBuilder_ == null) {
          result.nukeDetect_ = nukeDetect_;
        } else {
          result.nukeDetect_ = nukeDetectBuilder_.build();
        }
        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
          to_bitField0_ |= 0x00000040;
        }
        result.paused_ = paused_;
        if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
          to_bitField0_ |= 0x00000080;
        }
        result.replay_ = replay_;
        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
          to_bitField0_ |= 0x00000100;
        }
        result.multiplayer_ = multiplayer_;
        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
          to_bitField0_ |= 0x00000200;
        }
        result.gameover_ = gameover_;
        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
          to_bitField0_ |= 0x00000400;
        }
        result.isWinner_ = isWinner_;
        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
          to_bitField0_ |= 0x00000800;
        }
        if (screenPositionBuilder_ == null) {
          result.screenPosition_ = screenPosition_;
        } else {
          result.screenPosition_ = screenPositionBuilder_.build();
        }
        if (((from_bitField0_ & 0x02000000) == 0x02000000)) {
          to_bitField0_ |= 0x00001000;
        }
        result.latency_ = latency_;
        if (((from_bitField0_ & 0x04000000) == 0x04000000)) {
          to_bitField0_ |= 0x00002000;
        }
        if (dynamicTerrainInfoBuilder_ == null) {
          result.dynamicTerrainInfo_ = dynamicTerrainInfo_;
        } else {
          result.dynamicTerrainInfo_ = dynamicTerrainInfoBuilder_.build();
        }
        if (((from_bitField0_ & 0x08000000) == 0x08000000)) {
          to_bitField0_ |= 0x00004000;
        }
        if (terrainInfoBuilder_ == null) {
          result.terrainInfo_ = terrainInfo_;
        } else {
          result.terrainInfo_ = terrainInfoBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.bwapi.proxy.messages.Messages.FrameMessage) {
          return mergeFrom((org.bwapi.proxy.messages.Messages.FrameMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.bwapi.proxy.messages.Messages.FrameMessage other) {
        if (other == org.bwapi.proxy.messages.Messages.FrameMessage.getDefaultInstance()) return this;
        if (other.hasFrameCount()) {
          setFrameCount(other.getFrameCount());
        }
        if (other.hasMouseX()) {
          setMouseX(other.getMouseX());
        }
        if (other.hasMouseY()) {
          setMouseY(other.getMouseY());
        }
        if (other.hasScreenX()) {
          setScreenX(other.getScreenX());
        }
        if (other.hasScreenY()) {
          setScreenY(other.getScreenY());
        }
        if (unitsBuilder_ == null) {
          if (!other.units_.isEmpty()) {
            if (units_.isEmpty()) {
              units_ = other.units_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureUnitsIsMutable();
              units_.addAll(other.units_);
            }
            onChanged();
          }
        } else {
          if (!other.units_.isEmpty()) {
            if (unitsBuilder_.isEmpty()) {
              unitsBuilder_.dispose();
              unitsBuilder_ = null;
              units_ = other.units_;
              bitField0_ = (bitField0_ & ~0x00000020);
              unitsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getUnitsFieldBuilder() : null;
            } else {
              unitsBuilder_.addAllMessages(other.units_);
            }
          }
        }
        if (bulletsBuilder_ == null) {
          if (!other.bullets_.isEmpty()) {
            if (bullets_.isEmpty()) {
              bullets_ = other.bullets_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureBulletsIsMutable();
              bullets_.addAll(other.bullets_);
            }
            onChanged();
          }
        } else {
          if (!other.bullets_.isEmpty()) {
            if (bulletsBuilder_.isEmpty()) {
              bulletsBuilder_.dispose();
              bulletsBuilder_ = null;
              bullets_ = other.bullets_;
              bitField0_ = (bitField0_ & ~0x00000040);
              bulletsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getBulletsFieldBuilder() : null;
            } else {
              bulletsBuilder_.addAllMessages(other.bullets_);
            }
          }
        }
        if (playersBuilder_ == null) {
          if (!other.players_.isEmpty()) {
            if (players_.isEmpty()) {
              players_ = other.players_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensurePlayersIsMutable();
              players_.addAll(other.players_);
            }
            onChanged();
          }
        } else {
          if (!other.players_.isEmpty()) {
            if (playersBuilder_.isEmpty()) {
              playersBuilder_.dispose();
              playersBuilder_ = null;
              players_ = other.players_;
              bitField0_ = (bitField0_ & ~0x00000080);
              playersBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPlayersFieldBuilder() : null;
            } else {
              playersBuilder_.addAllMessages(other.players_);
            }
          }
        }
        if (createdUnitsBuilder_ == null) {
          if (!other.createdUnits_.isEmpty()) {
            if (createdUnits_.isEmpty()) {
              createdUnits_ = other.createdUnits_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureCreatedUnitsIsMutable();
              createdUnits_.addAll(other.createdUnits_);
            }
            onChanged();
          }
        } else {
          if (!other.createdUnits_.isEmpty()) {
            if (createdUnitsBuilder_.isEmpty()) {
              createdUnitsBuilder_.dispose();
              createdUnitsBuilder_ = null;
              createdUnits_ = other.createdUnits_;
              bitField0_ = (bitField0_ & ~0x00000100);
              createdUnitsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getCreatedUnitsFieldBuilder() : null;
            } else {
              createdUnitsBuilder_.addAllMessages(other.createdUnits_);
            }
          }
        }
        if (destroyedUnitsBuilder_ == null) {
          if (!other.destroyedUnits_.isEmpty()) {
            if (destroyedUnits_.isEmpty()) {
              destroyedUnits_ = other.destroyedUnits_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureDestroyedUnitsIsMutable();
              destroyedUnits_.addAll(other.destroyedUnits_);
            }
            onChanged();
          }
        } else {
          if (!other.destroyedUnits_.isEmpty()) {
            if (destroyedUnitsBuilder_.isEmpty()) {
              destroyedUnitsBuilder_.dispose();
              destroyedUnitsBuilder_ = null;
              destroyedUnits_ = other.destroyedUnits_;
              bitField0_ = (bitField0_ & ~0x00000200);
              destroyedUnitsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getDestroyedUnitsFieldBuilder() : null;
            } else {
              destroyedUnitsBuilder_.addAllMessages(other.destroyedUnits_);
            }
          }
        }
        if (morphedUnitsBuilder_ == null) {
          if (!other.morphedUnits_.isEmpty()) {
            if (morphedUnits_.isEmpty()) {
              morphedUnits_ = other.morphedUnits_;
              bitField0_ = (bitField0_ & ~0x00000400);
            } else {
              ensureMorphedUnitsIsMutable();
              morphedUnits_.addAll(other.morphedUnits_);
            }
            onChanged();
          }
        } else {
          if (!other.morphedUnits_.isEmpty()) {
            if (morphedUnitsBuilder_.isEmpty()) {
              morphedUnitsBuilder_.dispose();
              morphedUnitsBuilder_ = null;
              morphedUnits_ = other.morphedUnits_;
              bitField0_ = (bitField0_ & ~0x00000400);
              morphedUnitsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMorphedUnitsFieldBuilder() : null;
            } else {
              morphedUnitsBuilder_.addAllMessages(other.morphedUnits_);
            }
          }
        }
        if (shownUnitsBuilder_ == null) {
          if (!other.shownUnits_.isEmpty()) {
            if (shownUnits_.isEmpty()) {
              shownUnits_ = other.shownUnits_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureShownUnitsIsMutable();
              shownUnits_.addAll(other.shownUnits_);
            }
            onChanged();
          }
        } else {
          if (!other.shownUnits_.isEmpty()) {
            if (shownUnitsBuilder_.isEmpty()) {
              shownUnitsBuilder_.dispose();
              shownUnitsBuilder_ = null;
              shownUnits_ = other.shownUnits_;
              bitField0_ = (bitField0_ & ~0x00000800);
              shownUnitsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getShownUnitsFieldBuilder() : null;
            } else {
              shownUnitsBuilder_.addAllMessages(other.shownUnits_);
            }
          }
        }
        if (hiddenUnitsBuilder_ == null) {
          if (!other.hiddenUnits_.isEmpty()) {
            if (hiddenUnits_.isEmpty()) {
              hiddenUnits_ = other.hiddenUnits_;
              bitField0_ = (bitField0_ & ~0x00001000);
            } else {
              ensureHiddenUnitsIsMutable();
              hiddenUnits_.addAll(other.hiddenUnits_);
            }
            onChanged();
          }
        } else {
          if (!other.hiddenUnits_.isEmpty()) {
            if (hiddenUnitsBuilder_.isEmpty()) {
              hiddenUnitsBuilder_.dispose();
              hiddenUnitsBuilder_ = null;
              hiddenUnits_ = other.hiddenUnits_;
              bitField0_ = (bitField0_ & ~0x00001000);
              hiddenUnitsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getHiddenUnitsFieldBuilder() : null;
            } else {
              hiddenUnitsBuilder_.addAllMessages(other.hiddenUnits_);
            }
          }
        }
        if (renegadedUnitsBuilder_ == null) {
          if (!other.renegadedUnits_.isEmpty()) {
            if (renegadedUnits_.isEmpty()) {
              renegadedUnits_ = other.renegadedUnits_;
              bitField0_ = (bitField0_ & ~0x00002000);
            } else {
              ensureRenegadedUnitsIsMutable();
              renegadedUnits_.addAll(other.renegadedUnits_);
            }
            onChanged();
          }
        } else {
          if (!other.renegadedUnits_.isEmpty()) {
            if (renegadedUnitsBuilder_.isEmpty()) {
              renegadedUnitsBuilder_.dispose();
              renegadedUnitsBuilder_ = null;
              renegadedUnits_ = other.renegadedUnits_;
              bitField0_ = (bitField0_ & ~0x00002000);
              renegadedUnitsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getRenegadedUnitsFieldBuilder() : null;
            } else {
              renegadedUnitsBuilder_.addAllMessages(other.renegadedUnits_);
            }
          }
        }
        if (!other.leftplayers_.isEmpty()) {
          if (leftplayers_.isEmpty()) {
            leftplayers_ = other.leftplayers_;
            bitField0_ = (bitField0_ & ~0x00004000);
          } else {
            ensureLeftplayersIsMutable();
            leftplayers_.addAll(other.leftplayers_);
          }
          onChanged();
        }
        if (receivedTextsBuilder_ == null) {
          if (!other.receivedTexts_.isEmpty()) {
            if (receivedTexts_.isEmpty()) {
              receivedTexts_ = other.receivedTexts_;
              bitField0_ = (bitField0_ & ~0x00008000);
            } else {
              ensureReceivedTextsIsMutable();
              receivedTexts_.addAll(other.receivedTexts_);
            }
            onChanged();
          }
        } else {
          if (!other.receivedTexts_.isEmpty()) {
            if (receivedTextsBuilder_.isEmpty()) {
              receivedTextsBuilder_.dispose();
              receivedTextsBuilder_ = null;
              receivedTexts_ = other.receivedTexts_;
              bitField0_ = (bitField0_ & ~0x00008000);
              receivedTextsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getReceivedTextsFieldBuilder() : null;
            } else {
              receivedTextsBuilder_.addAllMessages(other.receivedTexts_);
            }
          }
        }
        if (selectedUnitsBuilder_ == null) {
          if (!other.selectedUnits_.isEmpty()) {
            if (selectedUnits_.isEmpty()) {
              selectedUnits_ = other.selectedUnits_;
              bitField0_ = (bitField0_ & ~0x00010000);
            } else {
              ensureSelectedUnitsIsMutable();
              selectedUnits_.addAll(other.selectedUnits_);
            }
            onChanged();
          }
        } else {
          if (!other.selectedUnits_.isEmpty()) {
            if (selectedUnitsBuilder_.isEmpty()) {
              selectedUnitsBuilder_.dispose();
              selectedUnitsBuilder_ = null;
              selectedUnits_ = other.selectedUnits_;
              bitField0_ = (bitField0_ & ~0x00010000);
              selectedUnitsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSelectedUnitsFieldBuilder() : null;
            } else {
              selectedUnitsBuilder_.addAllMessages(other.selectedUnits_);
            }
          }
        }
        if (!other.sentText_.isEmpty()) {
          if (sentText_.isEmpty()) {
            sentText_ = other.sentText_;
            bitField0_ = (bitField0_ & ~0x00020000);
          } else {
            ensureSentTextIsMutable();
            sentText_.addAll(other.sentText_);
          }
          onChanged();
        }
        if (other.hasNukeDetect()) {
          mergeNukeDetect(other.getNukeDetect());
        }
        if (other.hasPaused()) {
          setPaused(other.getPaused());
        }
        if (other.hasReplay()) {
          setReplay(other.getReplay());
        }
        if (other.hasMultiplayer()) {
          setMultiplayer(other.getMultiplayer());
        }
        if (other.hasGameover()) {
          setGameover(other.getGameover());
        }
        if (other.hasIsWinner()) {
          setIsWinner(other.getIsWinner());
        }
        if (other.hasScreenPosition()) {
          mergeScreenPosition(other.getScreenPosition());
        }
        if (other.hasLatency()) {
          setLatency(other.getLatency());
        }
        if (other.hasDynamicTerrainInfo()) {
          mergeDynamicTerrainInfo(other.getDynamicTerrainInfo());
        }
        if (other.hasTerrainInfo()) {
          mergeTerrainInfo(other.getTerrainInfo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFrameCount()) {
          
          return false;
        }
        if (!hasMouseX()) {
          
          return false;
        }
        if (!hasMouseY()) {
          
          return false;
        }
        if (!hasScreenX()) {
          
          return false;
        }
        if (!hasScreenY()) {
          
          return false;
        }
        if (!hasPaused()) {
          
          return false;
        }
        if (!hasReplay()) {
          
          return false;
        }
        if (!hasMultiplayer()) {
          
          return false;
        }
        if (!hasScreenPosition()) {
          
          return false;
        }
        if (!hasLatency()) {
          
          return false;
        }
        if (!hasDynamicTerrainInfo()) {
          
          return false;
        }
        for (int i = 0; i < getUnitsCount(); i++) {
          if (!getUnits(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getBulletsCount(); i++) {
          if (!getBullets(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getPlayersCount(); i++) {
          if (!getPlayers(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getCreatedUnitsCount(); i++) {
          if (!getCreatedUnits(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getDestroyedUnitsCount(); i++) {
          if (!getDestroyedUnits(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getMorphedUnitsCount(); i++) {
          if (!getMorphedUnits(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getShownUnitsCount(); i++) {
          if (!getShownUnits(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getHiddenUnitsCount(); i++) {
          if (!getHiddenUnits(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getRenegadedUnitsCount(); i++) {
          if (!getRenegadedUnits(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getReceivedTextsCount(); i++) {
          if (!getReceivedTexts(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getSelectedUnitsCount(); i++) {
          if (!getSelectedUnits(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasNukeDetect()) {
          if (!getNukeDetect().isInitialized()) {
            
            return false;
          }
        }
        if (!getScreenPosition().isInitialized()) {
          
          return false;
        }
        if (hasTerrainInfo()) {
          if (!getTerrainInfo().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

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

      // required int32 frameCount = 1;
      private int frameCount_ ;
      /**
       * <code>required int32 frameCount = 1;</code>
       */
      public boolean hasFrameCount() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 frameCount = 1;</code>
       */
      public int getFrameCount() {
        return frameCount_;
      }
      /**
       * <code>required int32 frameCount = 1;</code>
       */
      public Builder setFrameCount(int value) {
        bitField0_ |= 0x00000001;
        frameCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 frameCount = 1;</code>
       */
      public Builder clearFrameCount() {
        bitField0_ = (bitField0_ & ~0x00000001);
        frameCount_ = 0;
        onChanged();
        return this;
      }

      // required int32 mouseX = 27;
      private int mouseX_ ;
      /**
       * <code>required int32 mouseX = 27;</code>
       */
      public boolean hasMouseX() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 mouseX = 27;</code>
       */
      public int getMouseX() {
        return mouseX_;
      }
      /**
       * <code>required int32 mouseX = 27;</code>
       */
      public Builder setMouseX(int value) {
        bitField0_ |= 0x00000002;
        mouseX_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 mouseX = 27;</code>
       */
      public Builder clearMouseX() {
        bitField0_ = (bitField0_ & ~0x00000002);
        mouseX_ = 0;
        onChanged();
        return this;
      }

      // required int32 mouseY = 28;
      private int mouseY_ ;
      /**
       * <code>required int32 mouseY = 28;</code>
       */
      public boolean hasMouseY() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int32 mouseY = 28;</code>
       */
      public int getMouseY() {
        return mouseY_;
      }
      /**
       * <code>required int32 mouseY = 28;</code>
       */
      public Builder setMouseY(int value) {
        bitField0_ |= 0x00000004;
        mouseY_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 mouseY = 28;</code>
       */
      public Builder clearMouseY() {
        bitField0_ = (bitField0_ & ~0x00000004);
        mouseY_ = 0;
        onChanged();
        return this;
      }

      // required int32 screenX = 4;
      private int screenX_ ;
      /**
       * <code>required int32 screenX = 4;</code>
       */
      public boolean hasScreenX() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required int32 screenX = 4;</code>
       */
      public int getScreenX() {
        return screenX_;
      }
      /**
       * <code>required int32 screenX = 4;</code>
       */
      public Builder setScreenX(int value) {
        bitField0_ |= 0x00000008;
        screenX_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 screenX = 4;</code>
       */
      public Builder clearScreenX() {
        bitField0_ = (bitField0_ & ~0x00000008);
        screenX_ = 0;
        onChanged();
        return this;
      }

      // required int32 screenY = 5;
      private int screenY_ ;
      /**
       * <code>required int32 screenY = 5;</code>
       */
      public boolean hasScreenY() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>required int32 screenY = 5;</code>
       */
      public int getScreenY() {
        return screenY_;
      }
      /**
       * <code>required int32 screenY = 5;</code>
       */
      public Builder setScreenY(int value) {
        bitField0_ |= 0x00000010;
        screenY_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 screenY = 5;</code>
       */
      public Builder clearScreenY() {
        bitField0_ = (bitField0_ & ~0x00000010);
        screenY_ = 0;
        onChanged();
        return this;
      }

      // repeated .messages.Unit units = 6;
      private java.util.List<org.bwapi.proxy.messages.GameMessages.Unit> units_ =
        java.util.Collections.emptyList();
      private void ensureUnitsIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          units_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.Unit>(units_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.Unit, org.bwapi.proxy.messages.GameMessages.Unit.Builder, org.bwapi.proxy.messages.GameMessages.UnitOrBuilder> unitsBuilder_;

      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.Unit> getUnitsList() {
        if (unitsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(units_);
        } else {
          return unitsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public int getUnitsCount() {
        if (unitsBuilder_ == null) {
          return units_.size();
        } else {
          return unitsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.Unit getUnits(int index) {
        if (unitsBuilder_ == null) {
          return units_.get(index);
        } else {
          return unitsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public Builder setUnits(
          int index, org.bwapi.proxy.messages.GameMessages.Unit value) {
        if (unitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUnitsIsMutable();
          units_.set(index, value);
          onChanged();
        } else {
          unitsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public Builder setUnits(
          int index, org.bwapi.proxy.messages.GameMessages.Unit.Builder builderForValue) {
        if (unitsBuilder_ == null) {
          ensureUnitsIsMutable();
          units_.set(index, builderForValue.build());
          onChanged();
        } else {
          unitsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public Builder addUnits(org.bwapi.proxy.messages.GameMessages.Unit value) {
        if (unitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUnitsIsMutable();
          units_.add(value);
          onChanged();
        } else {
          unitsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public Builder addUnits(
          int index, org.bwapi.proxy.messages.GameMessages.Unit value) {
        if (unitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUnitsIsMutable();
          units_.add(index, value);
          onChanged();
        } else {
          unitsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public Builder addUnits(
          org.bwapi.proxy.messages.GameMessages.Unit.Builder builderForValue) {
        if (unitsBuilder_ == null) {
          ensureUnitsIsMutable();
          units_.add(builderForValue.build());
          onChanged();
        } else {
          unitsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public Builder addUnits(
          int index, org.bwapi.proxy.messages.GameMessages.Unit.Builder builderForValue) {
        if (unitsBuilder_ == null) {
          ensureUnitsIsMutable();
          units_.add(index, builderForValue.build());
          onChanged();
        } else {
          unitsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public Builder addAllUnits(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.GameMessages.Unit> values) {
        if (unitsBuilder_ == null) {
          ensureUnitsIsMutable();
          super.addAll(values, units_);
          onChanged();
        } else {
          unitsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public Builder clearUnits() {
        if (unitsBuilder_ == null) {
          units_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          unitsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public Builder removeUnits(int index) {
        if (unitsBuilder_ == null) {
          ensureUnitsIsMutable();
          units_.remove(index);
          onChanged();
        } else {
          unitsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.Unit.Builder getUnitsBuilder(
          int index) {
        return getUnitsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitOrBuilder getUnitsOrBuilder(
          int index) {
        if (unitsBuilder_ == null) {
          return units_.get(index);  } else {
          return unitsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitOrBuilder> 
           getUnitsOrBuilderList() {
        if (unitsBuilder_ != null) {
          return unitsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(units_);
        }
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.Unit.Builder addUnitsBuilder() {
        return getUnitsFieldBuilder().addBuilder(
            org.bwapi.proxy.messages.GameMessages.Unit.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.Unit.Builder addUnitsBuilder(
          int index) {
        return getUnitsFieldBuilder().addBuilder(
            index, org.bwapi.proxy.messages.GameMessages.Unit.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.Unit units = 6;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.Unit.Builder> 
           getUnitsBuilderList() {
        return getUnitsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.Unit, org.bwapi.proxy.messages.GameMessages.Unit.Builder, org.bwapi.proxy.messages.GameMessages.UnitOrBuilder> 
          getUnitsFieldBuilder() {
        if (unitsBuilder_ == null) {
          unitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.bwapi.proxy.messages.GameMessages.Unit, org.bwapi.proxy.messages.GameMessages.Unit.Builder, org.bwapi.proxy.messages.GameMessages.UnitOrBuilder>(
                  units_,
                  ((bitField0_ & 0x00000020) == 0x00000020),
                  getParentForChildren(),
                  isClean());
          units_ = null;
        }
        return unitsBuilder_;
      }

      // repeated .messages.Bullet bullets = 3;
      private java.util.List<org.bwapi.proxy.messages.GameMessages.Bullet> bullets_ =
        java.util.Collections.emptyList();
      private void ensureBulletsIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          bullets_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.Bullet>(bullets_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.Bullet, org.bwapi.proxy.messages.GameMessages.Bullet.Builder, org.bwapi.proxy.messages.GameMessages.BulletOrBuilder> bulletsBuilder_;

      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.Bullet> getBulletsList() {
        if (bulletsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(bullets_);
        } else {
          return bulletsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public int getBulletsCount() {
        if (bulletsBuilder_ == null) {
          return bullets_.size();
        } else {
          return bulletsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.Bullet getBullets(int index) {
        if (bulletsBuilder_ == null) {
          return bullets_.get(index);
        } else {
          return bulletsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public Builder setBullets(
          int index, org.bwapi.proxy.messages.GameMessages.Bullet value) {
        if (bulletsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBulletsIsMutable();
          bullets_.set(index, value);
          onChanged();
        } else {
          bulletsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public Builder setBullets(
          int index, org.bwapi.proxy.messages.GameMessages.Bullet.Builder builderForValue) {
        if (bulletsBuilder_ == null) {
          ensureBulletsIsMutable();
          bullets_.set(index, builderForValue.build());
          onChanged();
        } else {
          bulletsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public Builder addBullets(org.bwapi.proxy.messages.GameMessages.Bullet value) {
        if (bulletsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBulletsIsMutable();
          bullets_.add(value);
          onChanged();
        } else {
          bulletsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public Builder addBullets(
          int index, org.bwapi.proxy.messages.GameMessages.Bullet value) {
        if (bulletsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBulletsIsMutable();
          bullets_.add(index, value);
          onChanged();
        } else {
          bulletsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public Builder addBullets(
          org.bwapi.proxy.messages.GameMessages.Bullet.Builder builderForValue) {
        if (bulletsBuilder_ == null) {
          ensureBulletsIsMutable();
          bullets_.add(builderForValue.build());
          onChanged();
        } else {
          bulletsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public Builder addBullets(
          int index, org.bwapi.proxy.messages.GameMessages.Bullet.Builder builderForValue) {
        if (bulletsBuilder_ == null) {
          ensureBulletsIsMutable();
          bullets_.add(index, builderForValue.build());
          onChanged();
        } else {
          bulletsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public Builder addAllBullets(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.GameMessages.Bullet> values) {
        if (bulletsBuilder_ == null) {
          ensureBulletsIsMutable();
          super.addAll(values, bullets_);
          onChanged();
        } else {
          bulletsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public Builder clearBullets() {
        if (bulletsBuilder_ == null) {
          bullets_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          bulletsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public Builder removeBullets(int index) {
        if (bulletsBuilder_ == null) {
          ensureBulletsIsMutable();
          bullets_.remove(index);
          onChanged();
        } else {
          bulletsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.Bullet.Builder getBulletsBuilder(
          int index) {
        return getBulletsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.BulletOrBuilder getBulletsOrBuilder(
          int index) {
        if (bulletsBuilder_ == null) {
          return bullets_.get(index);  } else {
          return bulletsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.BulletOrBuilder> 
           getBulletsOrBuilderList() {
        if (bulletsBuilder_ != null) {
          return bulletsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(bullets_);
        }
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.Bullet.Builder addBulletsBuilder() {
        return getBulletsFieldBuilder().addBuilder(
            org.bwapi.proxy.messages.GameMessages.Bullet.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.Bullet.Builder addBulletsBuilder(
          int index) {
        return getBulletsFieldBuilder().addBuilder(
            index, org.bwapi.proxy.messages.GameMessages.Bullet.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.Bullet bullets = 3;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.Bullet.Builder> 
           getBulletsBuilderList() {
        return getBulletsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.Bullet, org.bwapi.proxy.messages.GameMessages.Bullet.Builder, org.bwapi.proxy.messages.GameMessages.BulletOrBuilder> 
          getBulletsFieldBuilder() {
        if (bulletsBuilder_ == null) {
          bulletsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.bwapi.proxy.messages.GameMessages.Bullet, org.bwapi.proxy.messages.GameMessages.Bullet.Builder, org.bwapi.proxy.messages.GameMessages.BulletOrBuilder>(
                  bullets_,
                  ((bitField0_ & 0x00000040) == 0x00000040),
                  getParentForChildren(),
                  isClean());
          bullets_ = null;
        }
        return bulletsBuilder_;
      }

      // repeated .messages.Player players = 20;
      private java.util.List<org.bwapi.proxy.messages.GameMessages.Player> players_ =
        java.util.Collections.emptyList();
      private void ensurePlayersIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          players_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.Player>(players_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.Player, org.bwapi.proxy.messages.GameMessages.Player.Builder, org.bwapi.proxy.messages.GameMessages.PlayerOrBuilder> playersBuilder_;

      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.Player> getPlayersList() {
        if (playersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(players_);
        } else {
          return playersBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public int getPlayersCount() {
        if (playersBuilder_ == null) {
          return players_.size();
        } else {
          return playersBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.Player getPlayers(int index) {
        if (playersBuilder_ == null) {
          return players_.get(index);
        } else {
          return playersBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public Builder setPlayers(
          int index, org.bwapi.proxy.messages.GameMessages.Player value) {
        if (playersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePlayersIsMutable();
          players_.set(index, value);
          onChanged();
        } else {
          playersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public Builder setPlayers(
          int index, org.bwapi.proxy.messages.GameMessages.Player.Builder builderForValue) {
        if (playersBuilder_ == null) {
          ensurePlayersIsMutable();
          players_.set(index, builderForValue.build());
          onChanged();
        } else {
          playersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public Builder addPlayers(org.bwapi.proxy.messages.GameMessages.Player value) {
        if (playersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePlayersIsMutable();
          players_.add(value);
          onChanged();
        } else {
          playersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public Builder addPlayers(
          int index, org.bwapi.proxy.messages.GameMessages.Player value) {
        if (playersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePlayersIsMutable();
          players_.add(index, value);
          onChanged();
        } else {
          playersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public Builder addPlayers(
          org.bwapi.proxy.messages.GameMessages.Player.Builder builderForValue) {
        if (playersBuilder_ == null) {
          ensurePlayersIsMutable();
          players_.add(builderForValue.build());
          onChanged();
        } else {
          playersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public Builder addPlayers(
          int index, org.bwapi.proxy.messages.GameMessages.Player.Builder builderForValue) {
        if (playersBuilder_ == null) {
          ensurePlayersIsMutable();
          players_.add(index, builderForValue.build());
          onChanged();
        } else {
          playersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public Builder addAllPlayers(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.GameMessages.Player> values) {
        if (playersBuilder_ == null) {
          ensurePlayersIsMutable();
          super.addAll(values, players_);
          onChanged();
        } else {
          playersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public Builder clearPlayers() {
        if (playersBuilder_ == null) {
          players_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          playersBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public Builder removePlayers(int index) {
        if (playersBuilder_ == null) {
          ensurePlayersIsMutable();
          players_.remove(index);
          onChanged();
        } else {
          playersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.Player.Builder getPlayersBuilder(
          int index) {
        return getPlayersFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.PlayerOrBuilder getPlayersOrBuilder(
          int index) {
        if (playersBuilder_ == null) {
          return players_.get(index);  } else {
          return playersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.PlayerOrBuilder> 
           getPlayersOrBuilderList() {
        if (playersBuilder_ != null) {
          return playersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(players_);
        }
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.Player.Builder addPlayersBuilder() {
        return getPlayersFieldBuilder().addBuilder(
            org.bwapi.proxy.messages.GameMessages.Player.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.Player.Builder addPlayersBuilder(
          int index) {
        return getPlayersFieldBuilder().addBuilder(
            index, org.bwapi.proxy.messages.GameMessages.Player.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.Player players = 20;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.Player.Builder> 
           getPlayersBuilderList() {
        return getPlayersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.Player, org.bwapi.proxy.messages.GameMessages.Player.Builder, org.bwapi.proxy.messages.GameMessages.PlayerOrBuilder> 
          getPlayersFieldBuilder() {
        if (playersBuilder_ == null) {
          playersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.bwapi.proxy.messages.GameMessages.Player, org.bwapi.proxy.messages.GameMessages.Player.Builder, org.bwapi.proxy.messages.GameMessages.PlayerOrBuilder>(
                  players_,
                  ((bitField0_ & 0x00000080) == 0x00000080),
                  getParentForChildren(),
                  isClean());
          players_ = null;
        }
        return playersBuilder_;
      }

      // repeated .messages.UnitId createdUnits = 7;
      private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> createdUnits_ =
        java.util.Collections.emptyList();
      private void ensureCreatedUnitsIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          createdUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>(createdUnits_);
          bitField0_ |= 0x00000100;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> createdUnitsBuilder_;

      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getCreatedUnitsList() {
        if (createdUnitsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(createdUnits_);
        } else {
          return createdUnitsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public int getCreatedUnitsCount() {
        if (createdUnitsBuilder_ == null) {
          return createdUnits_.size();
        } else {
          return createdUnitsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId getCreatedUnits(int index) {
        if (createdUnitsBuilder_ == null) {
          return createdUnits_.get(index);
        } else {
          return createdUnitsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public Builder setCreatedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (createdUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCreatedUnitsIsMutable();
          createdUnits_.set(index, value);
          onChanged();
        } else {
          createdUnitsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public Builder setCreatedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (createdUnitsBuilder_ == null) {
          ensureCreatedUnitsIsMutable();
          createdUnits_.set(index, builderForValue.build());
          onChanged();
        } else {
          createdUnitsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public Builder addCreatedUnits(org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (createdUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCreatedUnitsIsMutable();
          createdUnits_.add(value);
          onChanged();
        } else {
          createdUnitsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public Builder addCreatedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (createdUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCreatedUnitsIsMutable();
          createdUnits_.add(index, value);
          onChanged();
        } else {
          createdUnitsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public Builder addCreatedUnits(
          org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (createdUnitsBuilder_ == null) {
          ensureCreatedUnitsIsMutable();
          createdUnits_.add(builderForValue.build());
          onChanged();
        } else {
          createdUnitsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public Builder addCreatedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (createdUnitsBuilder_ == null) {
          ensureCreatedUnitsIsMutable();
          createdUnits_.add(index, builderForValue.build());
          onChanged();
        } else {
          createdUnitsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public Builder addAllCreatedUnits(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.GameMessages.UnitId> values) {
        if (createdUnitsBuilder_ == null) {
          ensureCreatedUnitsIsMutable();
          super.addAll(values, createdUnits_);
          onChanged();
        } else {
          createdUnitsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public Builder clearCreatedUnits() {
        if (createdUnitsBuilder_ == null) {
          createdUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          createdUnitsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public Builder removeCreatedUnits(int index) {
        if (createdUnitsBuilder_ == null) {
          ensureCreatedUnitsIsMutable();
          createdUnits_.remove(index);
          onChanged();
        } else {
          createdUnitsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder getCreatedUnitsBuilder(
          int index) {
        return getCreatedUnitsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getCreatedUnitsOrBuilder(
          int index) {
        if (createdUnitsBuilder_ == null) {
          return createdUnits_.get(index);  } else {
          return createdUnitsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
           getCreatedUnitsOrBuilderList() {
        if (createdUnitsBuilder_ != null) {
          return createdUnitsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(createdUnits_);
        }
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addCreatedUnitsBuilder() {
        return getCreatedUnitsFieldBuilder().addBuilder(
            org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addCreatedUnitsBuilder(
          int index) {
        return getCreatedUnitsFieldBuilder().addBuilder(
            index, org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId createdUnits = 7;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId.Builder> 
           getCreatedUnitsBuilderList() {
        return getCreatedUnitsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
          getCreatedUnitsFieldBuilder() {
        if (createdUnitsBuilder_ == null) {
          createdUnitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder>(
                  createdUnits_,
                  ((bitField0_ & 0x00000100) == 0x00000100),
                  getParentForChildren(),
                  isClean());
          createdUnits_ = null;
        }
        return createdUnitsBuilder_;
      }

      // repeated .messages.UnitId destroyedUnits = 8;
      private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> destroyedUnits_ =
        java.util.Collections.emptyList();
      private void ensureDestroyedUnitsIsMutable() {
        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
          destroyedUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>(destroyedUnits_);
          bitField0_ |= 0x00000200;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> destroyedUnitsBuilder_;

      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getDestroyedUnitsList() {
        if (destroyedUnitsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(destroyedUnits_);
        } else {
          return destroyedUnitsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public int getDestroyedUnitsCount() {
        if (destroyedUnitsBuilder_ == null) {
          return destroyedUnits_.size();
        } else {
          return destroyedUnitsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId getDestroyedUnits(int index) {
        if (destroyedUnitsBuilder_ == null) {
          return destroyedUnits_.get(index);
        } else {
          return destroyedUnitsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public Builder setDestroyedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (destroyedUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDestroyedUnitsIsMutable();
          destroyedUnits_.set(index, value);
          onChanged();
        } else {
          destroyedUnitsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public Builder setDestroyedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (destroyedUnitsBuilder_ == null) {
          ensureDestroyedUnitsIsMutable();
          destroyedUnits_.set(index, builderForValue.build());
          onChanged();
        } else {
          destroyedUnitsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public Builder addDestroyedUnits(org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (destroyedUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDestroyedUnitsIsMutable();
          destroyedUnits_.add(value);
          onChanged();
        } else {
          destroyedUnitsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public Builder addDestroyedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (destroyedUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDestroyedUnitsIsMutable();
          destroyedUnits_.add(index, value);
          onChanged();
        } else {
          destroyedUnitsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public Builder addDestroyedUnits(
          org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (destroyedUnitsBuilder_ == null) {
          ensureDestroyedUnitsIsMutable();
          destroyedUnits_.add(builderForValue.build());
          onChanged();
        } else {
          destroyedUnitsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public Builder addDestroyedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (destroyedUnitsBuilder_ == null) {
          ensureDestroyedUnitsIsMutable();
          destroyedUnits_.add(index, builderForValue.build());
          onChanged();
        } else {
          destroyedUnitsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public Builder addAllDestroyedUnits(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.GameMessages.UnitId> values) {
        if (destroyedUnitsBuilder_ == null) {
          ensureDestroyedUnitsIsMutable();
          super.addAll(values, destroyedUnits_);
          onChanged();
        } else {
          destroyedUnitsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public Builder clearDestroyedUnits() {
        if (destroyedUnitsBuilder_ == null) {
          destroyedUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
        } else {
          destroyedUnitsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public Builder removeDestroyedUnits(int index) {
        if (destroyedUnitsBuilder_ == null) {
          ensureDestroyedUnitsIsMutable();
          destroyedUnits_.remove(index);
          onChanged();
        } else {
          destroyedUnitsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder getDestroyedUnitsBuilder(
          int index) {
        return getDestroyedUnitsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getDestroyedUnitsOrBuilder(
          int index) {
        if (destroyedUnitsBuilder_ == null) {
          return destroyedUnits_.get(index);  } else {
          return destroyedUnitsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
           getDestroyedUnitsOrBuilderList() {
        if (destroyedUnitsBuilder_ != null) {
          return destroyedUnitsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(destroyedUnits_);
        }
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addDestroyedUnitsBuilder() {
        return getDestroyedUnitsFieldBuilder().addBuilder(
            org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addDestroyedUnitsBuilder(
          int index) {
        return getDestroyedUnitsFieldBuilder().addBuilder(
            index, org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId destroyedUnits = 8;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId.Builder> 
           getDestroyedUnitsBuilderList() {
        return getDestroyedUnitsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
          getDestroyedUnitsFieldBuilder() {
        if (destroyedUnitsBuilder_ == null) {
          destroyedUnitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder>(
                  destroyedUnits_,
                  ((bitField0_ & 0x00000200) == 0x00000200),
                  getParentForChildren(),
                  isClean());
          destroyedUnits_ = null;
        }
        return destroyedUnitsBuilder_;
      }

      // repeated .messages.UnitId morphedUnits = 9;
      private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> morphedUnits_ =
        java.util.Collections.emptyList();
      private void ensureMorphedUnitsIsMutable() {
        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
          morphedUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>(morphedUnits_);
          bitField0_ |= 0x00000400;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> morphedUnitsBuilder_;

      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getMorphedUnitsList() {
        if (morphedUnitsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(morphedUnits_);
        } else {
          return morphedUnitsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public int getMorphedUnitsCount() {
        if (morphedUnitsBuilder_ == null) {
          return morphedUnits_.size();
        } else {
          return morphedUnitsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId getMorphedUnits(int index) {
        if (morphedUnitsBuilder_ == null) {
          return morphedUnits_.get(index);
        } else {
          return morphedUnitsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public Builder setMorphedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (morphedUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMorphedUnitsIsMutable();
          morphedUnits_.set(index, value);
          onChanged();
        } else {
          morphedUnitsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public Builder setMorphedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (morphedUnitsBuilder_ == null) {
          ensureMorphedUnitsIsMutable();
          morphedUnits_.set(index, builderForValue.build());
          onChanged();
        } else {
          morphedUnitsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public Builder addMorphedUnits(org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (morphedUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMorphedUnitsIsMutable();
          morphedUnits_.add(value);
          onChanged();
        } else {
          morphedUnitsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public Builder addMorphedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (morphedUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMorphedUnitsIsMutable();
          morphedUnits_.add(index, value);
          onChanged();
        } else {
          morphedUnitsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public Builder addMorphedUnits(
          org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (morphedUnitsBuilder_ == null) {
          ensureMorphedUnitsIsMutable();
          morphedUnits_.add(builderForValue.build());
          onChanged();
        } else {
          morphedUnitsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public Builder addMorphedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (morphedUnitsBuilder_ == null) {
          ensureMorphedUnitsIsMutable();
          morphedUnits_.add(index, builderForValue.build());
          onChanged();
        } else {
          morphedUnitsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public Builder addAllMorphedUnits(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.GameMessages.UnitId> values) {
        if (morphedUnitsBuilder_ == null) {
          ensureMorphedUnitsIsMutable();
          super.addAll(values, morphedUnits_);
          onChanged();
        } else {
          morphedUnitsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public Builder clearMorphedUnits() {
        if (morphedUnitsBuilder_ == null) {
          morphedUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
          onChanged();
        } else {
          morphedUnitsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public Builder removeMorphedUnits(int index) {
        if (morphedUnitsBuilder_ == null) {
          ensureMorphedUnitsIsMutable();
          morphedUnits_.remove(index);
          onChanged();
        } else {
          morphedUnitsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder getMorphedUnitsBuilder(
          int index) {
        return getMorphedUnitsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getMorphedUnitsOrBuilder(
          int index) {
        if (morphedUnitsBuilder_ == null) {
          return morphedUnits_.get(index);  } else {
          return morphedUnitsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
           getMorphedUnitsOrBuilderList() {
        if (morphedUnitsBuilder_ != null) {
          return morphedUnitsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(morphedUnits_);
        }
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addMorphedUnitsBuilder() {
        return getMorphedUnitsFieldBuilder().addBuilder(
            org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addMorphedUnitsBuilder(
          int index) {
        return getMorphedUnitsFieldBuilder().addBuilder(
            index, org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId morphedUnits = 9;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId.Builder> 
           getMorphedUnitsBuilderList() {
        return getMorphedUnitsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
          getMorphedUnitsFieldBuilder() {
        if (morphedUnitsBuilder_ == null) {
          morphedUnitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder>(
                  morphedUnits_,
                  ((bitField0_ & 0x00000400) == 0x00000400),
                  getParentForChildren(),
                  isClean());
          morphedUnits_ = null;
        }
        return morphedUnitsBuilder_;
      }

      // repeated .messages.UnitId shownUnits = 10;
      private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> shownUnits_ =
        java.util.Collections.emptyList();
      private void ensureShownUnitsIsMutable() {
        if (!((bitField0_ & 0x00000800) == 0x00000800)) {
          shownUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>(shownUnits_);
          bitField0_ |= 0x00000800;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> shownUnitsBuilder_;

      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getShownUnitsList() {
        if (shownUnitsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(shownUnits_);
        } else {
          return shownUnitsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public int getShownUnitsCount() {
        if (shownUnitsBuilder_ == null) {
          return shownUnits_.size();
        } else {
          return shownUnitsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId getShownUnits(int index) {
        if (shownUnitsBuilder_ == null) {
          return shownUnits_.get(index);
        } else {
          return shownUnitsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public Builder setShownUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (shownUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureShownUnitsIsMutable();
          shownUnits_.set(index, value);
          onChanged();
        } else {
          shownUnitsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public Builder setShownUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (shownUnitsBuilder_ == null) {
          ensureShownUnitsIsMutable();
          shownUnits_.set(index, builderForValue.build());
          onChanged();
        } else {
          shownUnitsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public Builder addShownUnits(org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (shownUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureShownUnitsIsMutable();
          shownUnits_.add(value);
          onChanged();
        } else {
          shownUnitsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public Builder addShownUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (shownUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureShownUnitsIsMutable();
          shownUnits_.add(index, value);
          onChanged();
        } else {
          shownUnitsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public Builder addShownUnits(
          org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (shownUnitsBuilder_ == null) {
          ensureShownUnitsIsMutable();
          shownUnits_.add(builderForValue.build());
          onChanged();
        } else {
          shownUnitsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public Builder addShownUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (shownUnitsBuilder_ == null) {
          ensureShownUnitsIsMutable();
          shownUnits_.add(index, builderForValue.build());
          onChanged();
        } else {
          shownUnitsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public Builder addAllShownUnits(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.GameMessages.UnitId> values) {
        if (shownUnitsBuilder_ == null) {
          ensureShownUnitsIsMutable();
          super.addAll(values, shownUnits_);
          onChanged();
        } else {
          shownUnitsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public Builder clearShownUnits() {
        if (shownUnitsBuilder_ == null) {
          shownUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
        } else {
          shownUnitsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public Builder removeShownUnits(int index) {
        if (shownUnitsBuilder_ == null) {
          ensureShownUnitsIsMutable();
          shownUnits_.remove(index);
          onChanged();
        } else {
          shownUnitsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder getShownUnitsBuilder(
          int index) {
        return getShownUnitsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getShownUnitsOrBuilder(
          int index) {
        if (shownUnitsBuilder_ == null) {
          return shownUnits_.get(index);  } else {
          return shownUnitsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
           getShownUnitsOrBuilderList() {
        if (shownUnitsBuilder_ != null) {
          return shownUnitsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(shownUnits_);
        }
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addShownUnitsBuilder() {
        return getShownUnitsFieldBuilder().addBuilder(
            org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addShownUnitsBuilder(
          int index) {
        return getShownUnitsFieldBuilder().addBuilder(
            index, org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId shownUnits = 10;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId.Builder> 
           getShownUnitsBuilderList() {
        return getShownUnitsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
          getShownUnitsFieldBuilder() {
        if (shownUnitsBuilder_ == null) {
          shownUnitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder>(
                  shownUnits_,
                  ((bitField0_ & 0x00000800) == 0x00000800),
                  getParentForChildren(),
                  isClean());
          shownUnits_ = null;
        }
        return shownUnitsBuilder_;
      }

      // repeated .messages.UnitId hiddenUnits = 11;
      private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> hiddenUnits_ =
        java.util.Collections.emptyList();
      private void ensureHiddenUnitsIsMutable() {
        if (!((bitField0_ & 0x00001000) == 0x00001000)) {
          hiddenUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>(hiddenUnits_);
          bitField0_ |= 0x00001000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> hiddenUnitsBuilder_;

      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getHiddenUnitsList() {
        if (hiddenUnitsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(hiddenUnits_);
        } else {
          return hiddenUnitsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public int getHiddenUnitsCount() {
        if (hiddenUnitsBuilder_ == null) {
          return hiddenUnits_.size();
        } else {
          return hiddenUnitsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId getHiddenUnits(int index) {
        if (hiddenUnitsBuilder_ == null) {
          return hiddenUnits_.get(index);
        } else {
          return hiddenUnitsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public Builder setHiddenUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (hiddenUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHiddenUnitsIsMutable();
          hiddenUnits_.set(index, value);
          onChanged();
        } else {
          hiddenUnitsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public Builder setHiddenUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (hiddenUnitsBuilder_ == null) {
          ensureHiddenUnitsIsMutable();
          hiddenUnits_.set(index, builderForValue.build());
          onChanged();
        } else {
          hiddenUnitsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public Builder addHiddenUnits(org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (hiddenUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHiddenUnitsIsMutable();
          hiddenUnits_.add(value);
          onChanged();
        } else {
          hiddenUnitsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public Builder addHiddenUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (hiddenUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHiddenUnitsIsMutable();
          hiddenUnits_.add(index, value);
          onChanged();
        } else {
          hiddenUnitsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public Builder addHiddenUnits(
          org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (hiddenUnitsBuilder_ == null) {
          ensureHiddenUnitsIsMutable();
          hiddenUnits_.add(builderForValue.build());
          onChanged();
        } else {
          hiddenUnitsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public Builder addHiddenUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (hiddenUnitsBuilder_ == null) {
          ensureHiddenUnitsIsMutable();
          hiddenUnits_.add(index, builderForValue.build());
          onChanged();
        } else {
          hiddenUnitsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public Builder addAllHiddenUnits(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.GameMessages.UnitId> values) {
        if (hiddenUnitsBuilder_ == null) {
          ensureHiddenUnitsIsMutable();
          super.addAll(values, hiddenUnits_);
          onChanged();
        } else {
          hiddenUnitsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public Builder clearHiddenUnits() {
        if (hiddenUnitsBuilder_ == null) {
          hiddenUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00001000);
          onChanged();
        } else {
          hiddenUnitsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public Builder removeHiddenUnits(int index) {
        if (hiddenUnitsBuilder_ == null) {
          ensureHiddenUnitsIsMutable();
          hiddenUnits_.remove(index);
          onChanged();
        } else {
          hiddenUnitsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder getHiddenUnitsBuilder(
          int index) {
        return getHiddenUnitsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getHiddenUnitsOrBuilder(
          int index) {
        if (hiddenUnitsBuilder_ == null) {
          return hiddenUnits_.get(index);  } else {
          return hiddenUnitsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
           getHiddenUnitsOrBuilderList() {
        if (hiddenUnitsBuilder_ != null) {
          return hiddenUnitsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(hiddenUnits_);
        }
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addHiddenUnitsBuilder() {
        return getHiddenUnitsFieldBuilder().addBuilder(
            org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addHiddenUnitsBuilder(
          int index) {
        return getHiddenUnitsFieldBuilder().addBuilder(
            index, org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId hiddenUnits = 11;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId.Builder> 
           getHiddenUnitsBuilderList() {
        return getHiddenUnitsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
          getHiddenUnitsFieldBuilder() {
        if (hiddenUnitsBuilder_ == null) {
          hiddenUnitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder>(
                  hiddenUnits_,
                  ((bitField0_ & 0x00001000) == 0x00001000),
                  getParentForChildren(),
                  isClean());
          hiddenUnits_ = null;
        }
        return hiddenUnitsBuilder_;
      }

      // repeated .messages.UnitId renegadedUnits = 12;
      private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> renegadedUnits_ =
        java.util.Collections.emptyList();
      private void ensureRenegadedUnitsIsMutable() {
        if (!((bitField0_ & 0x00002000) == 0x00002000)) {
          renegadedUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>(renegadedUnits_);
          bitField0_ |= 0x00002000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> renegadedUnitsBuilder_;

      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getRenegadedUnitsList() {
        if (renegadedUnitsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(renegadedUnits_);
        } else {
          return renegadedUnitsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public int getRenegadedUnitsCount() {
        if (renegadedUnitsBuilder_ == null) {
          return renegadedUnits_.size();
        } else {
          return renegadedUnitsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId getRenegadedUnits(int index) {
        if (renegadedUnitsBuilder_ == null) {
          return renegadedUnits_.get(index);
        } else {
          return renegadedUnitsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public Builder setRenegadedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (renegadedUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRenegadedUnitsIsMutable();
          renegadedUnits_.set(index, value);
          onChanged();
        } else {
          renegadedUnitsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public Builder setRenegadedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (renegadedUnitsBuilder_ == null) {
          ensureRenegadedUnitsIsMutable();
          renegadedUnits_.set(index, builderForValue.build());
          onChanged();
        } else {
          renegadedUnitsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public Builder addRenegadedUnits(org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (renegadedUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRenegadedUnitsIsMutable();
          renegadedUnits_.add(value);
          onChanged();
        } else {
          renegadedUnitsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public Builder addRenegadedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (renegadedUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRenegadedUnitsIsMutable();
          renegadedUnits_.add(index, value);
          onChanged();
        } else {
          renegadedUnitsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public Builder addRenegadedUnits(
          org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (renegadedUnitsBuilder_ == null) {
          ensureRenegadedUnitsIsMutable();
          renegadedUnits_.add(builderForValue.build());
          onChanged();
        } else {
          renegadedUnitsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public Builder addRenegadedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (renegadedUnitsBuilder_ == null) {
          ensureRenegadedUnitsIsMutable();
          renegadedUnits_.add(index, builderForValue.build());
          onChanged();
        } else {
          renegadedUnitsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public Builder addAllRenegadedUnits(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.GameMessages.UnitId> values) {
        if (renegadedUnitsBuilder_ == null) {
          ensureRenegadedUnitsIsMutable();
          super.addAll(values, renegadedUnits_);
          onChanged();
        } else {
          renegadedUnitsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public Builder clearRenegadedUnits() {
        if (renegadedUnitsBuilder_ == null) {
          renegadedUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
          onChanged();
        } else {
          renegadedUnitsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public Builder removeRenegadedUnits(int index) {
        if (renegadedUnitsBuilder_ == null) {
          ensureRenegadedUnitsIsMutable();
          renegadedUnits_.remove(index);
          onChanged();
        } else {
          renegadedUnitsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder getRenegadedUnitsBuilder(
          int index) {
        return getRenegadedUnitsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getRenegadedUnitsOrBuilder(
          int index) {
        if (renegadedUnitsBuilder_ == null) {
          return renegadedUnits_.get(index);  } else {
          return renegadedUnitsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
           getRenegadedUnitsOrBuilderList() {
        if (renegadedUnitsBuilder_ != null) {
          return renegadedUnitsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(renegadedUnits_);
        }
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addRenegadedUnitsBuilder() {
        return getRenegadedUnitsFieldBuilder().addBuilder(
            org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addRenegadedUnitsBuilder(
          int index) {
        return getRenegadedUnitsFieldBuilder().addBuilder(
            index, org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId renegadedUnits = 12;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId.Builder> 
           getRenegadedUnitsBuilderList() {
        return getRenegadedUnitsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
          getRenegadedUnitsFieldBuilder() {
        if (renegadedUnitsBuilder_ == null) {
          renegadedUnitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder>(
                  renegadedUnits_,
                  ((bitField0_ & 0x00002000) == 0x00002000),
                  getParentForChildren(),
                  isClean());
          renegadedUnits_ = null;
        }
        return renegadedUnitsBuilder_;
      }

      // repeated int32 leftplayers = 21;
      private java.util.List<java.lang.Integer> leftplayers_ = java.util.Collections.emptyList();
      private void ensureLeftplayersIsMutable() {
        if (!((bitField0_ & 0x00004000) == 0x00004000)) {
          leftplayers_ = new java.util.ArrayList<java.lang.Integer>(leftplayers_);
          bitField0_ |= 0x00004000;
         }
      }
      /**
       * <code>repeated int32 leftplayers = 21;</code>
       */
      public java.util.List<java.lang.Integer>
          getLeftplayersList() {
        return java.util.Collections.unmodifiableList(leftplayers_);
      }
      /**
       * <code>repeated int32 leftplayers = 21;</code>
       */
      public int getLeftplayersCount() {
        return leftplayers_.size();
      }
      /**
       * <code>repeated int32 leftplayers = 21;</code>
       */
      public int getLeftplayers(int index) {
        return leftplayers_.get(index);
      }
      /**
       * <code>repeated int32 leftplayers = 21;</code>
       */
      public Builder setLeftplayers(
          int index, int value) {
        ensureLeftplayersIsMutable();
        leftplayers_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 leftplayers = 21;</code>
       */
      public Builder addLeftplayers(int value) {
        ensureLeftplayersIsMutable();
        leftplayers_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 leftplayers = 21;</code>
       */
      public Builder addAllLeftplayers(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureLeftplayersIsMutable();
        super.addAll(values, leftplayers_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 leftplayers = 21;</code>
       */
      public Builder clearLeftplayers() {
        leftplayers_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00004000);
        onChanged();
        return this;
      }

      // repeated .messages.PlayerText receivedTexts = 22;
      private java.util.List<org.bwapi.proxy.messages.Messages.PlayerText> receivedTexts_ =
        java.util.Collections.emptyList();
      private void ensureReceivedTextsIsMutable() {
        if (!((bitField0_ & 0x00008000) == 0x00008000)) {
          receivedTexts_ = new java.util.ArrayList<org.bwapi.proxy.messages.Messages.PlayerText>(receivedTexts_);
          bitField0_ |= 0x00008000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.Messages.PlayerText, org.bwapi.proxy.messages.Messages.PlayerText.Builder, org.bwapi.proxy.messages.Messages.PlayerTextOrBuilder> receivedTextsBuilder_;

      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.Messages.PlayerText> getReceivedTextsList() {
        if (receivedTextsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(receivedTexts_);
        } else {
          return receivedTextsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public int getReceivedTextsCount() {
        if (receivedTextsBuilder_ == null) {
          return receivedTexts_.size();
        } else {
          return receivedTextsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public org.bwapi.proxy.messages.Messages.PlayerText getReceivedTexts(int index) {
        if (receivedTextsBuilder_ == null) {
          return receivedTexts_.get(index);
        } else {
          return receivedTextsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public Builder setReceivedTexts(
          int index, org.bwapi.proxy.messages.Messages.PlayerText value) {
        if (receivedTextsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReceivedTextsIsMutable();
          receivedTexts_.set(index, value);
          onChanged();
        } else {
          receivedTextsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public Builder setReceivedTexts(
          int index, org.bwapi.proxy.messages.Messages.PlayerText.Builder builderForValue) {
        if (receivedTextsBuilder_ == null) {
          ensureReceivedTextsIsMutable();
          receivedTexts_.set(index, builderForValue.build());
          onChanged();
        } else {
          receivedTextsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public Builder addReceivedTexts(org.bwapi.proxy.messages.Messages.PlayerText value) {
        if (receivedTextsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReceivedTextsIsMutable();
          receivedTexts_.add(value);
          onChanged();
        } else {
          receivedTextsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public Builder addReceivedTexts(
          int index, org.bwapi.proxy.messages.Messages.PlayerText value) {
        if (receivedTextsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReceivedTextsIsMutable();
          receivedTexts_.add(index, value);
          onChanged();
        } else {
          receivedTextsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public Builder addReceivedTexts(
          org.bwapi.proxy.messages.Messages.PlayerText.Builder builderForValue) {
        if (receivedTextsBuilder_ == null) {
          ensureReceivedTextsIsMutable();
          receivedTexts_.add(builderForValue.build());
          onChanged();
        } else {
          receivedTextsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public Builder addReceivedTexts(
          int index, org.bwapi.proxy.messages.Messages.PlayerText.Builder builderForValue) {
        if (receivedTextsBuilder_ == null) {
          ensureReceivedTextsIsMutable();
          receivedTexts_.add(index, builderForValue.build());
          onChanged();
        } else {
          receivedTextsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public Builder addAllReceivedTexts(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.Messages.PlayerText> values) {
        if (receivedTextsBuilder_ == null) {
          ensureReceivedTextsIsMutable();
          super.addAll(values, receivedTexts_);
          onChanged();
        } else {
          receivedTextsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public Builder clearReceivedTexts() {
        if (receivedTextsBuilder_ == null) {
          receivedTexts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00008000);
          onChanged();
        } else {
          receivedTextsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public Builder removeReceivedTexts(int index) {
        if (receivedTextsBuilder_ == null) {
          ensureReceivedTextsIsMutable();
          receivedTexts_.remove(index);
          onChanged();
        } else {
          receivedTextsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public org.bwapi.proxy.messages.Messages.PlayerText.Builder getReceivedTextsBuilder(
          int index) {
        return getReceivedTextsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public org.bwapi.proxy.messages.Messages.PlayerTextOrBuilder getReceivedTextsOrBuilder(
          int index) {
        if (receivedTextsBuilder_ == null) {
          return receivedTexts_.get(index);  } else {
          return receivedTextsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public java.util.List<? extends org.bwapi.proxy.messages.Messages.PlayerTextOrBuilder> 
           getReceivedTextsOrBuilderList() {
        if (receivedTextsBuilder_ != null) {
          return receivedTextsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(receivedTexts_);
        }
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public org.bwapi.proxy.messages.Messages.PlayerText.Builder addReceivedTextsBuilder() {
        return getReceivedTextsFieldBuilder().addBuilder(
            org.bwapi.proxy.messages.Messages.PlayerText.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public org.bwapi.proxy.messages.Messages.PlayerText.Builder addReceivedTextsBuilder(
          int index) {
        return getReceivedTextsFieldBuilder().addBuilder(
            index, org.bwapi.proxy.messages.Messages.PlayerText.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.PlayerText receivedTexts = 22;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.Messages.PlayerText.Builder> 
           getReceivedTextsBuilderList() {
        return getReceivedTextsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.Messages.PlayerText, org.bwapi.proxy.messages.Messages.PlayerText.Builder, org.bwapi.proxy.messages.Messages.PlayerTextOrBuilder> 
          getReceivedTextsFieldBuilder() {
        if (receivedTextsBuilder_ == null) {
          receivedTextsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.bwapi.proxy.messages.Messages.PlayerText, org.bwapi.proxy.messages.Messages.PlayerText.Builder, org.bwapi.proxy.messages.Messages.PlayerTextOrBuilder>(
                  receivedTexts_,
                  ((bitField0_ & 0x00008000) == 0x00008000),
                  getParentForChildren(),
                  isClean());
          receivedTexts_ = null;
        }
        return receivedTextsBuilder_;
      }

      // repeated .messages.UnitId selectedUnits = 24;
      private java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> selectedUnits_ =
        java.util.Collections.emptyList();
      private void ensureSelectedUnitsIsMutable() {
        if (!((bitField0_ & 0x00010000) == 0x00010000)) {
          selectedUnits_ = new java.util.ArrayList<org.bwapi.proxy.messages.GameMessages.UnitId>(selectedUnits_);
          bitField0_ |= 0x00010000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> selectedUnitsBuilder_;

      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId> getSelectedUnitsList() {
        if (selectedUnitsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(selectedUnits_);
        } else {
          return selectedUnitsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public int getSelectedUnitsCount() {
        if (selectedUnitsBuilder_ == null) {
          return selectedUnits_.size();
        } else {
          return selectedUnitsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId getSelectedUnits(int index) {
        if (selectedUnitsBuilder_ == null) {
          return selectedUnits_.get(index);
        } else {
          return selectedUnitsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public Builder setSelectedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (selectedUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSelectedUnitsIsMutable();
          selectedUnits_.set(index, value);
          onChanged();
        } else {
          selectedUnitsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public Builder setSelectedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (selectedUnitsBuilder_ == null) {
          ensureSelectedUnitsIsMutable();
          selectedUnits_.set(index, builderForValue.build());
          onChanged();
        } else {
          selectedUnitsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public Builder addSelectedUnits(org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (selectedUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSelectedUnitsIsMutable();
          selectedUnits_.add(value);
          onChanged();
        } else {
          selectedUnitsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public Builder addSelectedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId value) {
        if (selectedUnitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSelectedUnitsIsMutable();
          selectedUnits_.add(index, value);
          onChanged();
        } else {
          selectedUnitsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public Builder addSelectedUnits(
          org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (selectedUnitsBuilder_ == null) {
          ensureSelectedUnitsIsMutable();
          selectedUnits_.add(builderForValue.build());
          onChanged();
        } else {
          selectedUnitsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public Builder addSelectedUnits(
          int index, org.bwapi.proxy.messages.GameMessages.UnitId.Builder builderForValue) {
        if (selectedUnitsBuilder_ == null) {
          ensureSelectedUnitsIsMutable();
          selectedUnits_.add(index, builderForValue.build());
          onChanged();
        } else {
          selectedUnitsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public Builder addAllSelectedUnits(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.GameMessages.UnitId> values) {
        if (selectedUnitsBuilder_ == null) {
          ensureSelectedUnitsIsMutable();
          super.addAll(values, selectedUnits_);
          onChanged();
        } else {
          selectedUnitsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public Builder clearSelectedUnits() {
        if (selectedUnitsBuilder_ == null) {
          selectedUnits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00010000);
          onChanged();
        } else {
          selectedUnitsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public Builder removeSelectedUnits(int index) {
        if (selectedUnitsBuilder_ == null) {
          ensureSelectedUnitsIsMutable();
          selectedUnits_.remove(index);
          onChanged();
        } else {
          selectedUnitsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder getSelectedUnitsBuilder(
          int index) {
        return getSelectedUnitsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder getSelectedUnitsOrBuilder(
          int index) {
        if (selectedUnitsBuilder_ == null) {
          return selectedUnits_.get(index);  } else {
          return selectedUnitsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public java.util.List<? extends org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
           getSelectedUnitsOrBuilderList() {
        if (selectedUnitsBuilder_ != null) {
          return selectedUnitsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(selectedUnits_);
        }
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addSelectedUnitsBuilder() {
        return getSelectedUnitsFieldBuilder().addBuilder(
            org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public org.bwapi.proxy.messages.GameMessages.UnitId.Builder addSelectedUnitsBuilder(
          int index) {
        return getSelectedUnitsFieldBuilder().addBuilder(
            index, org.bwapi.proxy.messages.GameMessages.UnitId.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.UnitId selectedUnits = 24;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.GameMessages.UnitId.Builder> 
           getSelectedUnitsBuilderList() {
        return getSelectedUnitsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder> 
          getSelectedUnitsFieldBuilder() {
        if (selectedUnitsBuilder_ == null) {
          selectedUnitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.bwapi.proxy.messages.GameMessages.UnitId, org.bwapi.proxy.messages.GameMessages.UnitId.Builder, org.bwapi.proxy.messages.GameMessages.UnitIdOrBuilder>(
                  selectedUnits_,
                  ((bitField0_ & 0x00010000) == 0x00010000),
                  getParentForChildren(),
                  isClean());
          selectedUnits_ = null;
        }
        return selectedUnitsBuilder_;
      }

      // repeated string sentText = 13;
      private com.google.protobuf.LazyStringList sentText_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureSentTextIsMutable() {
        if (!((bitField0_ & 0x00020000) == 0x00020000)) {
          sentText_ = new com.google.protobuf.LazyStringArrayList(sentText_);
          bitField0_ |= 0x00020000;
         }
      }
      /**
       * <code>repeated string sentText = 13;</code>
       */
      public java.util.List<java.lang.String>
          getSentTextList() {
        return java.util.Collections.unmodifiableList(sentText_);
      }
      /**
       * <code>repeated string sentText = 13;</code>
       */
      public int getSentTextCount() {
        return sentText_.size();
      }
      /**
       * <code>repeated string sentText = 13;</code>
       */
      public java.lang.String getSentText(int index) {
        return sentText_.get(index);
      }
      /**
       * <code>repeated string sentText = 13;</code>
       */
      public com.google.protobuf.ByteString
          getSentTextBytes(int index) {
        return sentText_.getByteString(index);
      }
      /**
       * <code>repeated string sentText = 13;</code>
       */
      public Builder setSentText(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSentTextIsMutable();
        sentText_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string sentText = 13;</code>
       */
      public Builder addSentText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSentTextIsMutable();
        sentText_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string sentText = 13;</code>
       */
      public Builder addAllSentText(
          java.lang.Iterable<java.lang.String> values) {
        ensureSentTextIsMutable();
        super.addAll(values, sentText_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string sentText = 13;</code>
       */
      public Builder clearSentText() {
        sentText_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00020000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string sentText = 13;</code>
       */
      public Builder addSentTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSentTextIsMutable();
        sentText_.add(value);
        onChanged();
        return this;
      }

      // optional .messages.Position nukeDetect = 14;
      private org.bwapi.proxy.messages.BasicTypes.Position nukeDetect_ = org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.bwapi.proxy.messages.BasicTypes.Position, org.bwapi.proxy.messages.BasicTypes.Position.Builder, org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder> nukeDetectBuilder_;
      /**
       * <code>optional .messages.Position nukeDetect = 14;</code>
       */
      public boolean hasNukeDetect() {
        return ((bitField0_ & 0x00040000) == 0x00040000);
      }
      /**
       * <code>optional .messages.Position nukeDetect = 14;</code>
       */
      public org.bwapi.proxy.messages.BasicTypes.Position getNukeDetect() {
        if (nukeDetectBuilder_ == null) {
          return nukeDetect_;
        } else {
          return nukeDetectBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .messages.Position nukeDetect = 14;</code>
       */
      public Builder setNukeDetect(org.bwapi.proxy.messages.BasicTypes.Position value) {
        if (nukeDetectBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nukeDetect_ = value;
          onChanged();
        } else {
          nukeDetectBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00040000;
        return this;
      }
      /**
       * <code>optional .messages.Position nukeDetect = 14;</code>
       */
      public Builder setNukeDetect(
          org.bwapi.proxy.messages.BasicTypes.Position.Builder builderForValue) {
        if (nukeDetectBuilder_ == null) {
          nukeDetect_ = builderForValue.build();
          onChanged();
        } else {
          nukeDetectBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00040000;
        return this;
      }
      /**
       * <code>optional .messages.Position nukeDetect = 14;</code>
       */
      public Builder mergeNukeDetect(org.bwapi.proxy.messages.BasicTypes.Position value) {
        if (nukeDetectBuilder_ == null) {
          if (((bitField0_ & 0x00040000) == 0x00040000) &&
              nukeDetect_ != org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance()) {
            nukeDetect_ =
              org.bwapi.proxy.messages.BasicTypes.Position.newBuilder(nukeDetect_).mergeFrom(value).buildPartial();
          } else {
            nukeDetect_ = value;
          }
          onChanged();
        } else {
          nukeDetectBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00040000;
        return this;
      }
      /**
       * <code>optional .messages.Position nukeDetect = 14;</code>
       */
      public Builder clearNukeDetect() {
        if (nukeDetectBuilder_ == null) {
          nukeDetect_ = org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance();
          onChanged();
        } else {
          nukeDetectBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00040000);
        return this;
      }
      /**
       * <code>optional .messages.Position nukeDetect = 14;</code>
       */
      public org.bwapi.proxy.messages.BasicTypes.Position.Builder getNukeDetectBuilder() {
        bitField0_ |= 0x00040000;
        onChanged();
        return getNukeDetectFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .messages.Position nukeDetect = 14;</code>
       */
      public org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder getNukeDetectOrBuilder() {
        if (nukeDetectBuilder_ != null) {
          return nukeDetectBuilder_.getMessageOrBuilder();
        } else {
          return nukeDetect_;
        }
      }
      /**
       * <code>optional .messages.Position nukeDetect = 14;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.bwapi.proxy.messages.BasicTypes.Position, org.bwapi.proxy.messages.BasicTypes.Position.Builder, org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder> 
          getNukeDetectFieldBuilder() {
        if (nukeDetectBuilder_ == null) {
          nukeDetectBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.bwapi.proxy.messages.BasicTypes.Position, org.bwapi.proxy.messages.BasicTypes.Position.Builder, org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder>(
                  nukeDetect_,
                  getParentForChildren(),
                  isClean());
          nukeDetect_ = null;
        }
        return nukeDetectBuilder_;
      }

      // required bool paused = 15;
      private boolean paused_ ;
      /**
       * <code>required bool paused = 15;</code>
       */
      public boolean hasPaused() {
        return ((bitField0_ & 0x00080000) == 0x00080000);
      }
      /**
       * <code>required bool paused = 15;</code>
       */
      public boolean getPaused() {
        return paused_;
      }
      /**
       * <code>required bool paused = 15;</code>
       */
      public Builder setPaused(boolean value) {
        bitField0_ |= 0x00080000;
        paused_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bool paused = 15;</code>
       */
      public Builder clearPaused() {
        bitField0_ = (bitField0_ & ~0x00080000);
        paused_ = false;
        onChanged();
        return this;
      }

      // required bool replay = 16;
      private boolean replay_ ;
      /**
       * <code>required bool replay = 16;</code>
       */
      public boolean hasReplay() {
        return ((bitField0_ & 0x00100000) == 0x00100000);
      }
      /**
       * <code>required bool replay = 16;</code>
       */
      public boolean getReplay() {
        return replay_;
      }
      /**
       * <code>required bool replay = 16;</code>
       */
      public Builder setReplay(boolean value) {
        bitField0_ |= 0x00100000;
        replay_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bool replay = 16;</code>
       */
      public Builder clearReplay() {
        bitField0_ = (bitField0_ & ~0x00100000);
        replay_ = false;
        onChanged();
        return this;
      }

      // required bool multiplayer = 17;
      private boolean multiplayer_ ;
      /**
       * <code>required bool multiplayer = 17;</code>
       */
      public boolean hasMultiplayer() {
        return ((bitField0_ & 0x00200000) == 0x00200000);
      }
      /**
       * <code>required bool multiplayer = 17;</code>
       */
      public boolean getMultiplayer() {
        return multiplayer_;
      }
      /**
       * <code>required bool multiplayer = 17;</code>
       */
      public Builder setMultiplayer(boolean value) {
        bitField0_ |= 0x00200000;
        multiplayer_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bool multiplayer = 17;</code>
       */
      public Builder clearMultiplayer() {
        bitField0_ = (bitField0_ & ~0x00200000);
        multiplayer_ = false;
        onChanged();
        return this;
      }

      // optional bool gameover = 23;
      private boolean gameover_ ;
      /**
       * <code>optional bool gameover = 23;</code>
       */
      public boolean hasGameover() {
        return ((bitField0_ & 0x00400000) == 0x00400000);
      }
      /**
       * <code>optional bool gameover = 23;</code>
       */
      public boolean getGameover() {
        return gameover_;
      }
      /**
       * <code>optional bool gameover = 23;</code>
       */
      public Builder setGameover(boolean value) {
        bitField0_ |= 0x00400000;
        gameover_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool gameover = 23;</code>
       */
      public Builder clearGameover() {
        bitField0_ = (bitField0_ & ~0x00400000);
        gameover_ = false;
        onChanged();
        return this;
      }

      // optional bool isWinner = 25;
      private boolean isWinner_ ;
      /**
       * <code>optional bool isWinner = 25;</code>
       */
      public boolean hasIsWinner() {
        return ((bitField0_ & 0x00800000) == 0x00800000);
      }
      /**
       * <code>optional bool isWinner = 25;</code>
       */
      public boolean getIsWinner() {
        return isWinner_;
      }
      /**
       * <code>optional bool isWinner = 25;</code>
       */
      public Builder setIsWinner(boolean value) {
        bitField0_ |= 0x00800000;
        isWinner_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isWinner = 25;</code>
       */
      public Builder clearIsWinner() {
        bitField0_ = (bitField0_ & ~0x00800000);
        isWinner_ = false;
        onChanged();
        return this;
      }

      // required .messages.Position screenPosition = 26;
      private org.bwapi.proxy.messages.BasicTypes.Position screenPosition_ = org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.bwapi.proxy.messages.BasicTypes.Position, org.bwapi.proxy.messages.BasicTypes.Position.Builder, org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder> screenPositionBuilder_;
      /**
       * <code>required .messages.Position screenPosition = 26;</code>
       */
      public boolean hasScreenPosition() {
        return ((bitField0_ & 0x01000000) == 0x01000000);
      }
      /**
       * <code>required .messages.Position screenPosition = 26;</code>
       */
      public org.bwapi.proxy.messages.BasicTypes.Position getScreenPosition() {
        if (screenPositionBuilder_ == null) {
          return screenPosition_;
        } else {
          return screenPositionBuilder_.getMessage();
        }
      }
      /**
       * <code>required .messages.Position screenPosition = 26;</code>
       */
      public Builder setScreenPosition(org.bwapi.proxy.messages.BasicTypes.Position value) {
        if (screenPositionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          screenPosition_ = value;
          onChanged();
        } else {
          screenPositionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x01000000;
        return this;
      }
      /**
       * <code>required .messages.Position screenPosition = 26;</code>
       */
      public Builder setScreenPosition(
          org.bwapi.proxy.messages.BasicTypes.Position.Builder builderForValue) {
        if (screenPositionBuilder_ == null) {
          screenPosition_ = builderForValue.build();
          onChanged();
        } else {
          screenPositionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x01000000;
        return this;
      }
      /**
       * <code>required .messages.Position screenPosition = 26;</code>
       */
      public Builder mergeScreenPosition(org.bwapi.proxy.messages.BasicTypes.Position value) {
        if (screenPositionBuilder_ == null) {
          if (((bitField0_ & 0x01000000) == 0x01000000) &&
              screenPosition_ != org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance()) {
            screenPosition_ =
              org.bwapi.proxy.messages.BasicTypes.Position.newBuilder(screenPosition_).mergeFrom(value).buildPartial();
          } else {
            screenPosition_ = value;
          }
          onChanged();
        } else {
          screenPositionBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x01000000;
        return this;
      }
      /**
       * <code>required .messages.Position screenPosition = 26;</code>
       */
      public Builder clearScreenPosition() {
        if (screenPositionBuilder_ == null) {
          screenPosition_ = org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance();
          onChanged();
        } else {
          screenPositionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x01000000);
        return this;
      }
      /**
       * <code>required .messages.Position screenPosition = 26;</code>
       */
      public org.bwapi.proxy.messages.BasicTypes.Position.Builder getScreenPositionBuilder() {
        bitField0_ |= 0x01000000;
        onChanged();
        return getScreenPositionFieldBuilder().getBuilder();
      }
      /**
       * <code>required .messages.Position screenPosition = 26;</code>
       */
      public org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder getScreenPositionOrBuilder() {
        if (screenPositionBuilder_ != null) {
          return screenPositionBuilder_.getMessageOrBuilder();
        } else {
          return screenPosition_;
        }
      }
      /**
       * <code>required .messages.Position screenPosition = 26;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.bwapi.proxy.messages.BasicTypes.Position, org.bwapi.proxy.messages.BasicTypes.Position.Builder, org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder> 
          getScreenPositionFieldBuilder() {
        if (screenPositionBuilder_ == null) {
          screenPositionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.bwapi.proxy.messages.BasicTypes.Position, org.bwapi.proxy.messages.BasicTypes.Position.Builder, org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder>(
                  screenPosition_,
                  getParentForChildren(),
                  isClean());
          screenPosition_ = null;
        }
        return screenPositionBuilder_;
      }

      // required int32 latency = 29;
      private int latency_ ;
      /**
       * <code>required int32 latency = 29;</code>
       */
      public boolean hasLatency() {
        return ((bitField0_ & 0x02000000) == 0x02000000);
      }
      /**
       * <code>required int32 latency = 29;</code>
       */
      public int getLatency() {
        return latency_;
      }
      /**
       * <code>required int32 latency = 29;</code>
       */
      public Builder setLatency(int value) {
        bitField0_ |= 0x02000000;
        latency_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 latency = 29;</code>
       */
      public Builder clearLatency() {
        bitField0_ = (bitField0_ & ~0x02000000);
        latency_ = 0;
        onChanged();
        return this;
      }

      // required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;
      private org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo dynamicTerrainInfo_ = org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo, org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo.Builder, org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfoOrBuilder> dynamicTerrainInfoBuilder_;
      /**
       * <code>required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;</code>
       */
      public boolean hasDynamicTerrainInfo() {
        return ((bitField0_ & 0x04000000) == 0x04000000);
      }
      /**
       * <code>required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;</code>
       */
      public org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo getDynamicTerrainInfo() {
        if (dynamicTerrainInfoBuilder_ == null) {
          return dynamicTerrainInfo_;
        } else {
          return dynamicTerrainInfoBuilder_.getMessage();
        }
      }
      /**
       * <code>required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;</code>
       */
      public Builder setDynamicTerrainInfo(org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo value) {
        if (dynamicTerrainInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dynamicTerrainInfo_ = value;
          onChanged();
        } else {
          dynamicTerrainInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x04000000;
        return this;
      }
      /**
       * <code>required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;</code>
       */
      public Builder setDynamicTerrainInfo(
          org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo.Builder builderForValue) {
        if (dynamicTerrainInfoBuilder_ == null) {
          dynamicTerrainInfo_ = builderForValue.build();
          onChanged();
        } else {
          dynamicTerrainInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x04000000;
        return this;
      }
      /**
       * <code>required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;</code>
       */
      public Builder mergeDynamicTerrainInfo(org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo value) {
        if (dynamicTerrainInfoBuilder_ == null) {
          if (((bitField0_ & 0x04000000) == 0x04000000) &&
              dynamicTerrainInfo_ != org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo.getDefaultInstance()) {
            dynamicTerrainInfo_ =
              org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo.newBuilder(dynamicTerrainInfo_).mergeFrom(value).buildPartial();
          } else {
            dynamicTerrainInfo_ = value;
          }
          onChanged();
        } else {
          dynamicTerrainInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x04000000;
        return this;
      }
      /**
       * <code>required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;</code>
       */
      public Builder clearDynamicTerrainInfo() {
        if (dynamicTerrainInfoBuilder_ == null) {
          dynamicTerrainInfo_ = org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo.getDefaultInstance();
          onChanged();
        } else {
          dynamicTerrainInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x04000000);
        return this;
      }
      /**
       * <code>required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;</code>
       */
      public org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo.Builder getDynamicTerrainInfoBuilder() {
        bitField0_ |= 0x04000000;
        onChanged();
        return getDynamicTerrainInfoFieldBuilder().getBuilder();
      }
      /**
       * <code>required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;</code>
       */
      public org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfoOrBuilder getDynamicTerrainInfoOrBuilder() {
        if (dynamicTerrainInfoBuilder_ != null) {
          return dynamicTerrainInfoBuilder_.getMessageOrBuilder();
        } else {
          return dynamicTerrainInfo_;
        }
      }
      /**
       * <code>required .messages.DynamicTerrainInfo dynamicTerrainInfo = 18;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo, org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo.Builder, org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfoOrBuilder> 
          getDynamicTerrainInfoFieldBuilder() {
        if (dynamicTerrainInfoBuilder_ == null) {
          dynamicTerrainInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo, org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfo.Builder, org.bwapi.proxy.messages.TerrainMessages.DynamicTerrainInfoOrBuilder>(
                  dynamicTerrainInfo_,
                  getParentForChildren(),
                  isClean());
          dynamicTerrainInfo_ = null;
        }
        return dynamicTerrainInfoBuilder_;
      }

      // optional .messages.StaticTerrainInfo terrainInfo = 19;
      private org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo terrainInfo_ = org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo, org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.Builder, org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfoOrBuilder> terrainInfoBuilder_;
      /**
       * <code>optional .messages.StaticTerrainInfo terrainInfo = 19;</code>
       */
      public boolean hasTerrainInfo() {
        return ((bitField0_ & 0x08000000) == 0x08000000);
      }
      /**
       * <code>optional .messages.StaticTerrainInfo terrainInfo = 19;</code>
       */
      public org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo getTerrainInfo() {
        if (terrainInfoBuilder_ == null) {
          return terrainInfo_;
        } else {
          return terrainInfoBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .messages.StaticTerrainInfo terrainInfo = 19;</code>
       */
      public Builder setTerrainInfo(org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo value) {
        if (terrainInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          terrainInfo_ = value;
          onChanged();
        } else {
          terrainInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x08000000;
        return this;
      }
      /**
       * <code>optional .messages.StaticTerrainInfo terrainInfo = 19;</code>
       */
      public Builder setTerrainInfo(
          org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.Builder builderForValue) {
        if (terrainInfoBuilder_ == null) {
          terrainInfo_ = builderForValue.build();
          onChanged();
        } else {
          terrainInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x08000000;
        return this;
      }
      /**
       * <code>optional .messages.StaticTerrainInfo terrainInfo = 19;</code>
       */
      public Builder mergeTerrainInfo(org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo value) {
        if (terrainInfoBuilder_ == null) {
          if (((bitField0_ & 0x08000000) == 0x08000000) &&
              terrainInfo_ != org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.getDefaultInstance()) {
            terrainInfo_ =
              org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.newBuilder(terrainInfo_).mergeFrom(value).buildPartial();
          } else {
            terrainInfo_ = value;
          }
          onChanged();
        } else {
          terrainInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x08000000;
        return this;
      }
      /**
       * <code>optional .messages.StaticTerrainInfo terrainInfo = 19;</code>
       */
      public Builder clearTerrainInfo() {
        if (terrainInfoBuilder_ == null) {
          terrainInfo_ = org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.getDefaultInstance();
          onChanged();
        } else {
          terrainInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x08000000);
        return this;
      }
      /**
       * <code>optional .messages.StaticTerrainInfo terrainInfo = 19;</code>
       */
      public org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.Builder getTerrainInfoBuilder() {
        bitField0_ |= 0x08000000;
        onChanged();
        return getTerrainInfoFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .messages.StaticTerrainInfo terrainInfo = 19;</code>
       */
      public org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfoOrBuilder getTerrainInfoOrBuilder() {
        if (terrainInfoBuilder_ != null) {
          return terrainInfoBuilder_.getMessageOrBuilder();
        } else {
          return terrainInfo_;
        }
      }
      /**
       * <code>optional .messages.StaticTerrainInfo terrainInfo = 19;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo, org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.Builder, org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfoOrBuilder> 
          getTerrainInfoFieldBuilder() {
        if (terrainInfoBuilder_ == null) {
          terrainInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo, org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.Builder, org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfoOrBuilder>(
                  terrainInfo_,
                  getParentForChildren(),
                  isClean());
          terrainInfo_ = null;
        }
        return terrainInfoBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:messages.FrameMessage)
    }

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

    // @@protoc_insertion_point(class_scope:messages.FrameMessage)
  }

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

    // repeated .messages.Command commands = 1;
    /**
     * <code>repeated .messages.Command commands = 1;</code>
     */
    java.util.List<org.bwapi.proxy.messages.Commands.Command> 
        getCommandsList();
    /**
     * <code>repeated .messages.Command commands = 1;</code>
     */
    org.bwapi.proxy.messages.Commands.Command getCommands(int index);
    /**
     * <code>repeated .messages.Command commands = 1;</code>
     */
    int getCommandsCount();
    /**
     * <code>repeated .messages.Command commands = 1;</code>
     */
    java.util.List<? extends org.bwapi.proxy.messages.Commands.CommandOrBuilder> 
        getCommandsOrBuilderList();
    /**
     * <code>repeated .messages.Command commands = 1;</code>
     */
    org.bwapi.proxy.messages.Commands.CommandOrBuilder getCommandsOrBuilder(
        int index);

    // optional sint32 gameSpeed = 2;
    /**
     * <code>optional sint32 gameSpeed = 2;</code>
     */
    boolean hasGameSpeed();
    /**
     * <code>optional sint32 gameSpeed = 2;</code>
     */
    int getGameSpeed();

    // repeated string sendText = 3;
    /**
     * <code>repeated string sendText = 3;</code>
     */
    java.util.List<java.lang.String>
    getSendTextList();
    /**
     * <code>repeated string sendText = 3;</code>
     */
    int getSendTextCount();
    /**
     * <code>repeated string sendText = 3;</code>
     */
    java.lang.String getSendText(int index);
    /**
     * <code>repeated string sendText = 3;</code>
     */
    com.google.protobuf.ByteString
        getSendTextBytes(int index);

    // repeated string printf = 4;
    /**
     * <code>repeated string printf = 4;</code>
     */
    java.util.List<java.lang.String>
    getPrintfList();
    /**
     * <code>repeated string printf = 4;</code>
     */
    int getPrintfCount();
    /**
     * <code>repeated string printf = 4;</code>
     */
    java.lang.String getPrintf(int index);
    /**
     * <code>repeated string printf = 4;</code>
     */
    com.google.protobuf.ByteString
        getPrintfBytes(int index);

    // repeated .messages.Flag flags = 5;
    /**
     * <code>repeated .messages.Flag flags = 5;</code>
     */
    java.util.List<org.bwapi.proxy.messages.Messages.Flag> getFlagsList();
    /**
     * <code>repeated .messages.Flag flags = 5;</code>
     */
    int getFlagsCount();
    /**
     * <code>repeated .messages.Flag flags = 5;</code>
     */
    org.bwapi.proxy.messages.Messages.Flag getFlags(int index);

    // repeated .messages.DrawCommand drawCommands = 6;
    /**
     * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
     */
    java.util.List<org.bwapi.proxy.messages.DrawCommands.DrawCommand> 
        getDrawCommandsList();
    /**
     * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
     */
    org.bwapi.proxy.messages.DrawCommands.DrawCommand getDrawCommands(int index);
    /**
     * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
     */
    int getDrawCommandsCount();
    /**
     * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
     */
    java.util.List<? extends org.bwapi.proxy.messages.DrawCommands.DrawCommandOrBuilder> 
        getDrawCommandsOrBuilderList();
    /**
     * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
     */
    org.bwapi.proxy.messages.DrawCommands.DrawCommandOrBuilder getDrawCommandsOrBuilder(
        int index);

    // optional .messages.Position screenPosition = 7;
    /**
     * <code>optional .messages.Position screenPosition = 7;</code>
     */
    boolean hasScreenPosition();
    /**
     * <code>optional .messages.Position screenPosition = 7;</code>
     */
    org.bwapi.proxy.messages.BasicTypes.Position getScreenPosition();
    /**
     * <code>optional .messages.Position screenPosition = 7;</code>
     */
    org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder getScreenPositionOrBuilder();

    // optional string botName = 8;
    /**
     * <code>optional string botName = 8;</code>
     */
    boolean hasBotName();
    /**
     * <code>optional string botName = 8;</code>
     */
    java.lang.String getBotName();
    /**
     * <code>optional string botName = 8;</code>
     */
    com.google.protobuf.ByteString
        getBotNameBytes();

    // optional string botCode = 9;
    /**
     * <code>optional string botCode = 9;</code>
     */
    boolean hasBotCode();
    /**
     * <code>optional string botCode = 9;</code>
     */
    java.lang.String getBotCode();
    /**
     * <code>optional string botCode = 9;</code>
     */
    com.google.protobuf.ByteString
        getBotCodeBytes();
  }
  /**
   * Protobuf type {@code messages.FrameCommands}
   */
  public static final class FrameCommands extends
      com.google.protobuf.GeneratedMessage
      implements FrameCommandsOrBuilder {
    // Use FrameCommands.newBuilder() to construct.
    private FrameCommands(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FrameCommands(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public FrameCommands getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private FrameCommands(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!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)) {
                commands_ = new java.util.ArrayList<org.bwapi.proxy.messages.Commands.Command>();
                mutable_bitField0_ |= 0x00000001;
              }
              commands_.add(input.readMessage(org.bwapi.proxy.messages.Commands.Command.PARSER, extensionRegistry));
              break;
            }
            case 16: {
              bitField0_ |= 0x00000001;
              gameSpeed_ = input.readSInt32();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                sendText_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              sendText_.add(input.readBytes());
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                printf_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              printf_.add(input.readBytes());
              break;
            }
            case 40: {
              int rawValue = input.readEnum();
              org.bwapi.proxy.messages.Messages.Flag value = org.bwapi.proxy.messages.Messages.Flag.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(5, rawValue);
              } else {
                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                  flags_ = new java.util.ArrayList<org.bwapi.proxy.messages.Messages.Flag>();
                  mutable_bitField0_ |= 0x00000010;
                }
                flags_.add(value);
              }
              break;
            }
            case 42: {
              int length = input.readRawVarint32();
              int oldLimit = input.pushLimit(length);
              while(input.getBytesUntilLimit() > 0) {
                int rawValue = input.readEnum();
                org.bwapi.proxy.messages.Messages.Flag value = org.bwapi.proxy.messages.Messages.Flag.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(5, rawValue);
                } else {
                  if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                    flags_ = new java.util.ArrayList<org.bwapi.proxy.messages.Messages.Flag>();
                    mutable_bitField0_ |= 0x00000010;
                  }
                  flags_.add(value);
                }
              }
              input.popLimit(oldLimit);
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                drawCommands_ = new java.util.ArrayList<org.bwapi.proxy.messages.DrawCommands.DrawCommand>();
                mutable_bitField0_ |= 0x00000020;
              }
              drawCommands_.add(input.readMessage(org.bwapi.proxy.messages.DrawCommands.DrawCommand.PARSER, extensionRegistry));
              break;
            }
            case 58: {
              org.bwapi.proxy.messages.BasicTypes.Position.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = screenPosition_.toBuilder();
              }
              screenPosition_ = input.readMessage(org.bwapi.proxy.messages.BasicTypes.Position.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(screenPosition_);
                screenPosition_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 66: {
              bitField0_ |= 0x00000004;
              botName_ = input.readBytes();
              break;
            }
            case 74: {
              bitField0_ |= 0x00000008;
              botCode_ = 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)) {
          commands_ = java.util.Collections.unmodifiableList(commands_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          sendText_ = new com.google.protobuf.UnmodifiableLazyStringList(sendText_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          printf_ = new com.google.protobuf.UnmodifiableLazyStringList(printf_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          flags_ = java.util.Collections.unmodifiableList(flags_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          drawCommands_ = java.util.Collections.unmodifiableList(drawCommands_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.bwapi.proxy.messages.Messages.internal_static_messages_FrameCommands_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.bwapi.proxy.messages.Messages.internal_static_messages_FrameCommands_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.bwapi.proxy.messages.Messages.FrameCommands.class, org.bwapi.proxy.messages.Messages.FrameCommands.Builder.class);
    }

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

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

    private int bitField0_;
    // repeated .messages.Command commands = 1;
    public static final int COMMANDS_FIELD_NUMBER = 1;
    private java.util.List<org.bwapi.proxy.messages.Commands.Command> commands_;
    /**
     * <code>repeated .messages.Command commands = 1;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.Commands.Command> getCommandsList() {
      return commands_;
    }
    /**
     * <code>repeated .messages.Command commands = 1;</code>
     */
    public java.util.List<? extends org.bwapi.proxy.messages.Commands.CommandOrBuilder> 
        getCommandsOrBuilderList() {
      return commands_;
    }
    /**
     * <code>repeated .messages.Command commands = 1;</code>
     */
    public int getCommandsCount() {
      return commands_.size();
    }
    /**
     * <code>repeated .messages.Command commands = 1;</code>
     */
    public org.bwapi.proxy.messages.Commands.Command getCommands(int index) {
      return commands_.get(index);
    }
    /**
     * <code>repeated .messages.Command commands = 1;</code>
     */
    public org.bwapi.proxy.messages.Commands.CommandOrBuilder getCommandsOrBuilder(
        int index) {
      return commands_.get(index);
    }

    // optional sint32 gameSpeed = 2;
    public static final int GAMESPEED_FIELD_NUMBER = 2;
    private int gameSpeed_;
    /**
     * <code>optional sint32 gameSpeed = 2;</code>
     */
    public boolean hasGameSpeed() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional sint32 gameSpeed = 2;</code>
     */
    public int getGameSpeed() {
      return gameSpeed_;
    }

    // repeated string sendText = 3;
    public static final int SENDTEXT_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList sendText_;
    /**
     * <code>repeated string sendText = 3;</code>
     */
    public java.util.List<java.lang.String>
        getSendTextList() {
      return sendText_;
    }
    /**
     * <code>repeated string sendText = 3;</code>
     */
    public int getSendTextCount() {
      return sendText_.size();
    }
    /**
     * <code>repeated string sendText = 3;</code>
     */
    public java.lang.String getSendText(int index) {
      return sendText_.get(index);
    }
    /**
     * <code>repeated string sendText = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSendTextBytes(int index) {
      return sendText_.getByteString(index);
    }

    // repeated string printf = 4;
    public static final int PRINTF_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList printf_;
    /**
     * <code>repeated string printf = 4;</code>
     */
    public java.util.List<java.lang.String>
        getPrintfList() {
      return printf_;
    }
    /**
     * <code>repeated string printf = 4;</code>
     */
    public int getPrintfCount() {
      return printf_.size();
    }
    /**
     * <code>repeated string printf = 4;</code>
     */
    public java.lang.String getPrintf(int index) {
      return printf_.get(index);
    }
    /**
     * <code>repeated string printf = 4;</code>
     */
    public com.google.protobuf.ByteString
        getPrintfBytes(int index) {
      return printf_.getByteString(index);
    }

    // repeated .messages.Flag flags = 5;
    public static final int FLAGS_FIELD_NUMBER = 5;
    private java.util.List<org.bwapi.proxy.messages.Messages.Flag> flags_;
    /**
     * <code>repeated .messages.Flag flags = 5;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.Messages.Flag> getFlagsList() {
      return flags_;
    }
    /**
     * <code>repeated .messages.Flag flags = 5;</code>
     */
    public int getFlagsCount() {
      return flags_.size();
    }
    /**
     * <code>repeated .messages.Flag flags = 5;</code>
     */
    public org.bwapi.proxy.messages.Messages.Flag getFlags(int index) {
      return flags_.get(index);
    }

    // repeated .messages.DrawCommand drawCommands = 6;
    public static final int DRAWCOMMANDS_FIELD_NUMBER = 6;
    private java.util.List<org.bwapi.proxy.messages.DrawCommands.DrawCommand> drawCommands_;
    /**
     * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
     */
    public java.util.List<org.bwapi.proxy.messages.DrawCommands.DrawCommand> getDrawCommandsList() {
      return drawCommands_;
    }
    /**
     * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
     */
    public java.util.List<? extends org.bwapi.proxy.messages.DrawCommands.DrawCommandOrBuilder> 
        getDrawCommandsOrBuilderList() {
      return drawCommands_;
    }
    /**
     * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
     */
    public int getDrawCommandsCount() {
      return drawCommands_.size();
    }
    /**
     * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
     */
    public org.bwapi.proxy.messages.DrawCommands.DrawCommand getDrawCommands(int index) {
      return drawCommands_.get(index);
    }
    /**
     * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
     */
    public org.bwapi.proxy.messages.DrawCommands.DrawCommandOrBuilder getDrawCommandsOrBuilder(
        int index) {
      return drawCommands_.get(index);
    }

    // optional .messages.Position screenPosition = 7;
    public static final int SCREENPOSITION_FIELD_NUMBER = 7;
    private org.bwapi.proxy.messages.BasicTypes.Position screenPosition_;
    /**
     * <code>optional .messages.Position screenPosition = 7;</code>
     */
    public boolean hasScreenPosition() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .messages.Position screenPosition = 7;</code>
     */
    public org.bwapi.proxy.messages.BasicTypes.Position getScreenPosition() {
      return screenPosition_;
    }
    /**
     * <code>optional .messages.Position screenPosition = 7;</code>
     */
    public org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder getScreenPositionOrBuilder() {
      return screenPosition_;
    }

    // optional string botName = 8;
    public static final int BOTNAME_FIELD_NUMBER = 8;
    private java.lang.Object botName_;
    /**
     * <code>optional string botName = 8;</code>
     */
    public boolean hasBotName() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string botName = 8;</code>
     */
    public java.lang.String getBotName() {
      java.lang.Object ref = botName_;
      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()) {
          botName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string botName = 8;</code>
     */
    public com.google.protobuf.ByteString
        getBotNameBytes() {
      java.lang.Object ref = botName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        botName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string botCode = 9;
    public static final int BOTCODE_FIELD_NUMBER = 9;
    private java.lang.Object botCode_;
    /**
     * <code>optional string botCode = 9;</code>
     */
    public boolean hasBotCode() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional string botCode = 9;</code>
     */
    public java.lang.String getBotCode() {
      java.lang.Object ref = botCode_;
      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()) {
          botCode_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string botCode = 9;</code>
     */
    public com.google.protobuf.ByteString
        getBotCodeBytes() {
      java.lang.Object ref = botCode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        botCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      commands_ = java.util.Collections.emptyList();
      gameSpeed_ = 0;
      sendText_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      printf_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      flags_ = java.util.Collections.emptyList();
      drawCommands_ = java.util.Collections.emptyList();
      screenPosition_ = org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance();
      botName_ = "";
      botCode_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getCommandsCount(); i++) {
        if (!getCommands(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getDrawCommandsCount(); i++) {
        if (!getDrawCommands(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasScreenPosition()) {
        if (!getScreenPosition().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < commands_.size(); i++) {
        output.writeMessage(1, commands_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeSInt32(2, gameSpeed_);
      }
      for (int i = 0; i < sendText_.size(); i++) {
        output.writeBytes(3, sendText_.getByteString(i));
      }
      for (int i = 0; i < printf_.size(); i++) {
        output.writeBytes(4, printf_.getByteString(i));
      }
      for (int i = 0; i < flags_.size(); i++) {
        output.writeEnum(5, flags_.get(i).getNumber());
      }
      for (int i = 0; i < drawCommands_.size(); i++) {
        output.writeMessage(6, drawCommands_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(7, screenPosition_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(8, getBotNameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(9, getBotCodeBytes());
      }
      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 < commands_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, commands_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt32Size(2, gameSpeed_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < sendText_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(sendText_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getSendTextList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < printf_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(printf_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getPrintfList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < flags_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(flags_.get(i).getNumber());
        }
        size += dataSize;
        size += 1 * flags_.size();
      }
      for (int i = 0; i < drawCommands_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, drawCommands_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, screenPosition_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(8, getBotNameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(9, getBotCodeBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

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

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

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.bwapi.proxy.messages.Messages.FrameCommands prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code messages.FrameCommands}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.bwapi.proxy.messages.Messages.FrameCommandsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.bwapi.proxy.messages.Messages.internal_static_messages_FrameCommands_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.bwapi.proxy.messages.Messages.internal_static_messages_FrameCommands_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.bwapi.proxy.messages.Messages.FrameCommands.class, org.bwapi.proxy.messages.Messages.FrameCommands.Builder.class);
      }

      // Construct using org.bwapi.proxy.messages.Messages.FrameCommands.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        if (commandsBuilder_ == null) {
          commands_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          commandsBuilder_.clear();
        }
        gameSpeed_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        sendText_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        printf_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        flags_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        if (drawCommandsBuilder_ == null) {
          drawCommands_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
        } else {
          drawCommandsBuilder_.clear();
        }
        if (screenPositionBuilder_ == null) {
          screenPosition_ = org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance();
        } else {
          screenPositionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        botName_ = "";
        bitField0_ = (bitField0_ & ~0x00000080);
        botCode_ = "";
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.bwapi.proxy.messages.Messages.internal_static_messages_FrameCommands_descriptor;
      }

      public org.bwapi.proxy.messages.Messages.FrameCommands getDefaultInstanceForType() {
        return org.bwapi.proxy.messages.Messages.FrameCommands.getDefaultInstance();
      }

      public org.bwapi.proxy.messages.Messages.FrameCommands build() {
        org.bwapi.proxy.messages.Messages.FrameCommands result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.bwapi.proxy.messages.Messages.FrameCommands buildPartial() {
        org.bwapi.proxy.messages.Messages.FrameCommands result = new org.bwapi.proxy.messages.Messages.FrameCommands(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (commandsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            commands_ = java.util.Collections.unmodifiableList(commands_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.commands_ = commands_;
        } else {
          result.commands_ = commandsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        result.gameSpeed_ = gameSpeed_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          sendText_ = new com.google.protobuf.UnmodifiableLazyStringList(
              sendText_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.sendText_ = sendText_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          printf_ = new com.google.protobuf.UnmodifiableLazyStringList(
              printf_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.printf_ = printf_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          flags_ = java.util.Collections.unmodifiableList(flags_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.flags_ = flags_;
        if (drawCommandsBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            drawCommands_ = java.util.Collections.unmodifiableList(drawCommands_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.drawCommands_ = drawCommands_;
        } else {
          result.drawCommands_ = drawCommandsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000002;
        }
        if (screenPositionBuilder_ == null) {
          result.screenPosition_ = screenPosition_;
        } else {
          result.screenPosition_ = screenPositionBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000004;
        }
        result.botName_ = botName_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000008;
        }
        result.botCode_ = botCode_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.bwapi.proxy.messages.Messages.FrameCommands) {
          return mergeFrom((org.bwapi.proxy.messages.Messages.FrameCommands)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.bwapi.proxy.messages.Messages.FrameCommands other) {
        if (other == org.bwapi.proxy.messages.Messages.FrameCommands.getDefaultInstance()) return this;
        if (commandsBuilder_ == null) {
          if (!other.commands_.isEmpty()) {
            if (commands_.isEmpty()) {
              commands_ = other.commands_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureCommandsIsMutable();
              commands_.addAll(other.commands_);
            }
            onChanged();
          }
        } else {
          if (!other.commands_.isEmpty()) {
            if (commandsBuilder_.isEmpty()) {
              commandsBuilder_.dispose();
              commandsBuilder_ = null;
              commands_ = other.commands_;
              bitField0_ = (bitField0_ & ~0x00000001);
              commandsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getCommandsFieldBuilder() : null;
            } else {
              commandsBuilder_.addAllMessages(other.commands_);
            }
          }
        }
        if (other.hasGameSpeed()) {
          setGameSpeed(other.getGameSpeed());
        }
        if (!other.sendText_.isEmpty()) {
          if (sendText_.isEmpty()) {
            sendText_ = other.sendText_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureSendTextIsMutable();
            sendText_.addAll(other.sendText_);
          }
          onChanged();
        }
        if (!other.printf_.isEmpty()) {
          if (printf_.isEmpty()) {
            printf_ = other.printf_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensurePrintfIsMutable();
            printf_.addAll(other.printf_);
          }
          onChanged();
        }
        if (!other.flags_.isEmpty()) {
          if (flags_.isEmpty()) {
            flags_ = other.flags_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureFlagsIsMutable();
            flags_.addAll(other.flags_);
          }
          onChanged();
        }
        if (drawCommandsBuilder_ == null) {
          if (!other.drawCommands_.isEmpty()) {
            if (drawCommands_.isEmpty()) {
              drawCommands_ = other.drawCommands_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureDrawCommandsIsMutable();
              drawCommands_.addAll(other.drawCommands_);
            }
            onChanged();
          }
        } else {
          if (!other.drawCommands_.isEmpty()) {
            if (drawCommandsBuilder_.isEmpty()) {
              drawCommandsBuilder_.dispose();
              drawCommandsBuilder_ = null;
              drawCommands_ = other.drawCommands_;
              bitField0_ = (bitField0_ & ~0x00000020);
              drawCommandsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getDrawCommandsFieldBuilder() : null;
            } else {
              drawCommandsBuilder_.addAllMessages(other.drawCommands_);
            }
          }
        }
        if (other.hasScreenPosition()) {
          mergeScreenPosition(other.getScreenPosition());
        }
        if (other.hasBotName()) {
          bitField0_ |= 0x00000080;
          botName_ = other.botName_;
          onChanged();
        }
        if (other.hasBotCode()) {
          bitField0_ |= 0x00000100;
          botCode_ = other.botCode_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getCommandsCount(); i++) {
          if (!getCommands(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getDrawCommandsCount(); i++) {
          if (!getDrawCommands(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasScreenPosition()) {
          if (!getScreenPosition().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

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

      // repeated .messages.Command commands = 1;
      private java.util.List<org.bwapi.proxy.messages.Commands.Command> commands_ =
        java.util.Collections.emptyList();
      private void ensureCommandsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          commands_ = new java.util.ArrayList<org.bwapi.proxy.messages.Commands.Command>(commands_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.Commands.Command, org.bwapi.proxy.messages.Commands.Command.Builder, org.bwapi.proxy.messages.Commands.CommandOrBuilder> commandsBuilder_;

      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.Commands.Command> getCommandsList() {
        if (commandsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(commands_);
        } else {
          return commandsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public int getCommandsCount() {
        if (commandsBuilder_ == null) {
          return commands_.size();
        } else {
          return commandsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public org.bwapi.proxy.messages.Commands.Command getCommands(int index) {
        if (commandsBuilder_ == null) {
          return commands_.get(index);
        } else {
          return commandsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public Builder setCommands(
          int index, org.bwapi.proxy.messages.Commands.Command value) {
        if (commandsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCommandsIsMutable();
          commands_.set(index, value);
          onChanged();
        } else {
          commandsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public Builder setCommands(
          int index, org.bwapi.proxy.messages.Commands.Command.Builder builderForValue) {
        if (commandsBuilder_ == null) {
          ensureCommandsIsMutable();
          commands_.set(index, builderForValue.build());
          onChanged();
        } else {
          commandsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public Builder addCommands(org.bwapi.proxy.messages.Commands.Command value) {
        if (commandsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCommandsIsMutable();
          commands_.add(value);
          onChanged();
        } else {
          commandsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public Builder addCommands(
          int index, org.bwapi.proxy.messages.Commands.Command value) {
        if (commandsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCommandsIsMutable();
          commands_.add(index, value);
          onChanged();
        } else {
          commandsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public Builder addCommands(
          org.bwapi.proxy.messages.Commands.Command.Builder builderForValue) {
        if (commandsBuilder_ == null) {
          ensureCommandsIsMutable();
          commands_.add(builderForValue.build());
          onChanged();
        } else {
          commandsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public Builder addCommands(
          int index, org.bwapi.proxy.messages.Commands.Command.Builder builderForValue) {
        if (commandsBuilder_ == null) {
          ensureCommandsIsMutable();
          commands_.add(index, builderForValue.build());
          onChanged();
        } else {
          commandsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public Builder addAllCommands(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.Commands.Command> values) {
        if (commandsBuilder_ == null) {
          ensureCommandsIsMutable();
          super.addAll(values, commands_);
          onChanged();
        } else {
          commandsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public Builder clearCommands() {
        if (commandsBuilder_ == null) {
          commands_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          commandsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public Builder removeCommands(int index) {
        if (commandsBuilder_ == null) {
          ensureCommandsIsMutable();
          commands_.remove(index);
          onChanged();
        } else {
          commandsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public org.bwapi.proxy.messages.Commands.Command.Builder getCommandsBuilder(
          int index) {
        return getCommandsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public org.bwapi.proxy.messages.Commands.CommandOrBuilder getCommandsOrBuilder(
          int index) {
        if (commandsBuilder_ == null) {
          return commands_.get(index);  } else {
          return commandsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public java.util.List<? extends org.bwapi.proxy.messages.Commands.CommandOrBuilder> 
           getCommandsOrBuilderList() {
        if (commandsBuilder_ != null) {
          return commandsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(commands_);
        }
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public org.bwapi.proxy.messages.Commands.Command.Builder addCommandsBuilder() {
        return getCommandsFieldBuilder().addBuilder(
            org.bwapi.proxy.messages.Commands.Command.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public org.bwapi.proxy.messages.Commands.Command.Builder addCommandsBuilder(
          int index) {
        return getCommandsFieldBuilder().addBuilder(
            index, org.bwapi.proxy.messages.Commands.Command.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.Command commands = 1;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.Commands.Command.Builder> 
           getCommandsBuilderList() {
        return getCommandsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.Commands.Command, org.bwapi.proxy.messages.Commands.Command.Builder, org.bwapi.proxy.messages.Commands.CommandOrBuilder> 
          getCommandsFieldBuilder() {
        if (commandsBuilder_ == null) {
          commandsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.bwapi.proxy.messages.Commands.Command, org.bwapi.proxy.messages.Commands.Command.Builder, org.bwapi.proxy.messages.Commands.CommandOrBuilder>(
                  commands_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          commands_ = null;
        }
        return commandsBuilder_;
      }

      // optional sint32 gameSpeed = 2;
      private int gameSpeed_ ;
      /**
       * <code>optional sint32 gameSpeed = 2;</code>
       */
      public boolean hasGameSpeed() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional sint32 gameSpeed = 2;</code>
       */
      public int getGameSpeed() {
        return gameSpeed_;
      }
      /**
       * <code>optional sint32 gameSpeed = 2;</code>
       */
      public Builder setGameSpeed(int value) {
        bitField0_ |= 0x00000002;
        gameSpeed_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional sint32 gameSpeed = 2;</code>
       */
      public Builder clearGameSpeed() {
        bitField0_ = (bitField0_ & ~0x00000002);
        gameSpeed_ = 0;
        onChanged();
        return this;
      }

      // repeated string sendText = 3;
      private com.google.protobuf.LazyStringList sendText_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureSendTextIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          sendText_ = new com.google.protobuf.LazyStringArrayList(sendText_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated string sendText = 3;</code>
       */
      public java.util.List<java.lang.String>
          getSendTextList() {
        return java.util.Collections.unmodifiableList(sendText_);
      }
      /**
       * <code>repeated string sendText = 3;</code>
       */
      public int getSendTextCount() {
        return sendText_.size();
      }
      /**
       * <code>repeated string sendText = 3;</code>
       */
      public java.lang.String getSendText(int index) {
        return sendText_.get(index);
      }
      /**
       * <code>repeated string sendText = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSendTextBytes(int index) {
        return sendText_.getByteString(index);
      }
      /**
       * <code>repeated string sendText = 3;</code>
       */
      public Builder setSendText(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSendTextIsMutable();
        sendText_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string sendText = 3;</code>
       */
      public Builder addSendText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSendTextIsMutable();
        sendText_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string sendText = 3;</code>
       */
      public Builder addAllSendText(
          java.lang.Iterable<java.lang.String> values) {
        ensureSendTextIsMutable();
        super.addAll(values, sendText_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string sendText = 3;</code>
       */
      public Builder clearSendText() {
        sendText_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string sendText = 3;</code>
       */
      public Builder addSendTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSendTextIsMutable();
        sendText_.add(value);
        onChanged();
        return this;
      }

      // repeated string printf = 4;
      private com.google.protobuf.LazyStringList printf_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensurePrintfIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          printf_ = new com.google.protobuf.LazyStringArrayList(printf_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <code>repeated string printf = 4;</code>
       */
      public java.util.List<java.lang.String>
          getPrintfList() {
        return java.util.Collections.unmodifiableList(printf_);
      }
      /**
       * <code>repeated string printf = 4;</code>
       */
      public int getPrintfCount() {
        return printf_.size();
      }
      /**
       * <code>repeated string printf = 4;</code>
       */
      public java.lang.String getPrintf(int index) {
        return printf_.get(index);
      }
      /**
       * <code>repeated string printf = 4;</code>
       */
      public com.google.protobuf.ByteString
          getPrintfBytes(int index) {
        return printf_.getByteString(index);
      }
      /**
       * <code>repeated string printf = 4;</code>
       */
      public Builder setPrintf(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePrintfIsMutable();
        printf_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string printf = 4;</code>
       */
      public Builder addPrintf(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePrintfIsMutable();
        printf_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string printf = 4;</code>
       */
      public Builder addAllPrintf(
          java.lang.Iterable<java.lang.String> values) {
        ensurePrintfIsMutable();
        super.addAll(values, printf_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string printf = 4;</code>
       */
      public Builder clearPrintf() {
        printf_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string printf = 4;</code>
       */
      public Builder addPrintfBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePrintfIsMutable();
        printf_.add(value);
        onChanged();
        return this;
      }

      // repeated .messages.Flag flags = 5;
      private java.util.List<org.bwapi.proxy.messages.Messages.Flag> flags_ =
        java.util.Collections.emptyList();
      private void ensureFlagsIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          flags_ = new java.util.ArrayList<org.bwapi.proxy.messages.Messages.Flag>(flags_);
          bitField0_ |= 0x00000010;
        }
      }
      /**
       * <code>repeated .messages.Flag flags = 5;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.Messages.Flag> getFlagsList() {
        return java.util.Collections.unmodifiableList(flags_);
      }
      /**
       * <code>repeated .messages.Flag flags = 5;</code>
       */
      public int getFlagsCount() {
        return flags_.size();
      }
      /**
       * <code>repeated .messages.Flag flags = 5;</code>
       */
      public org.bwapi.proxy.messages.Messages.Flag getFlags(int index) {
        return flags_.get(index);
      }
      /**
       * <code>repeated .messages.Flag flags = 5;</code>
       */
      public Builder setFlags(
          int index, org.bwapi.proxy.messages.Messages.Flag value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFlagsIsMutable();
        flags_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .messages.Flag flags = 5;</code>
       */
      public Builder addFlags(org.bwapi.proxy.messages.Messages.Flag value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFlagsIsMutable();
        flags_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .messages.Flag flags = 5;</code>
       */
      public Builder addAllFlags(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.Messages.Flag> values) {
        ensureFlagsIsMutable();
        super.addAll(values, flags_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .messages.Flag flags = 5;</code>
       */
      public Builder clearFlags() {
        flags_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }

      // repeated .messages.DrawCommand drawCommands = 6;
      private java.util.List<org.bwapi.proxy.messages.DrawCommands.DrawCommand> drawCommands_ =
        java.util.Collections.emptyList();
      private void ensureDrawCommandsIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          drawCommands_ = new java.util.ArrayList<org.bwapi.proxy.messages.DrawCommands.DrawCommand>(drawCommands_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.DrawCommands.DrawCommand, org.bwapi.proxy.messages.DrawCommands.DrawCommand.Builder, org.bwapi.proxy.messages.DrawCommands.DrawCommandOrBuilder> drawCommandsBuilder_;

      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.DrawCommands.DrawCommand> getDrawCommandsList() {
        if (drawCommandsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(drawCommands_);
        } else {
          return drawCommandsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public int getDrawCommandsCount() {
        if (drawCommandsBuilder_ == null) {
          return drawCommands_.size();
        } else {
          return drawCommandsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public org.bwapi.proxy.messages.DrawCommands.DrawCommand getDrawCommands(int index) {
        if (drawCommandsBuilder_ == null) {
          return drawCommands_.get(index);
        } else {
          return drawCommandsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public Builder setDrawCommands(
          int index, org.bwapi.proxy.messages.DrawCommands.DrawCommand value) {
        if (drawCommandsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDrawCommandsIsMutable();
          drawCommands_.set(index, value);
          onChanged();
        } else {
          drawCommandsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public Builder setDrawCommands(
          int index, org.bwapi.proxy.messages.DrawCommands.DrawCommand.Builder builderForValue) {
        if (drawCommandsBuilder_ == null) {
          ensureDrawCommandsIsMutable();
          drawCommands_.set(index, builderForValue.build());
          onChanged();
        } else {
          drawCommandsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public Builder addDrawCommands(org.bwapi.proxy.messages.DrawCommands.DrawCommand value) {
        if (drawCommandsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDrawCommandsIsMutable();
          drawCommands_.add(value);
          onChanged();
        } else {
          drawCommandsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public Builder addDrawCommands(
          int index, org.bwapi.proxy.messages.DrawCommands.DrawCommand value) {
        if (drawCommandsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDrawCommandsIsMutable();
          drawCommands_.add(index, value);
          onChanged();
        } else {
          drawCommandsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public Builder addDrawCommands(
          org.bwapi.proxy.messages.DrawCommands.DrawCommand.Builder builderForValue) {
        if (drawCommandsBuilder_ == null) {
          ensureDrawCommandsIsMutable();
          drawCommands_.add(builderForValue.build());
          onChanged();
        } else {
          drawCommandsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public Builder addDrawCommands(
          int index, org.bwapi.proxy.messages.DrawCommands.DrawCommand.Builder builderForValue) {
        if (drawCommandsBuilder_ == null) {
          ensureDrawCommandsIsMutable();
          drawCommands_.add(index, builderForValue.build());
          onChanged();
        } else {
          drawCommandsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public Builder addAllDrawCommands(
          java.lang.Iterable<? extends org.bwapi.proxy.messages.DrawCommands.DrawCommand> values) {
        if (drawCommandsBuilder_ == null) {
          ensureDrawCommandsIsMutable();
          super.addAll(values, drawCommands_);
          onChanged();
        } else {
          drawCommandsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public Builder clearDrawCommands() {
        if (drawCommandsBuilder_ == null) {
          drawCommands_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          drawCommandsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public Builder removeDrawCommands(int index) {
        if (drawCommandsBuilder_ == null) {
          ensureDrawCommandsIsMutable();
          drawCommands_.remove(index);
          onChanged();
        } else {
          drawCommandsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public org.bwapi.proxy.messages.DrawCommands.DrawCommand.Builder getDrawCommandsBuilder(
          int index) {
        return getDrawCommandsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public org.bwapi.proxy.messages.DrawCommands.DrawCommandOrBuilder getDrawCommandsOrBuilder(
          int index) {
        if (drawCommandsBuilder_ == null) {
          return drawCommands_.get(index);  } else {
          return drawCommandsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public java.util.List<? extends org.bwapi.proxy.messages.DrawCommands.DrawCommandOrBuilder> 
           getDrawCommandsOrBuilderList() {
        if (drawCommandsBuilder_ != null) {
          return drawCommandsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(drawCommands_);
        }
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public org.bwapi.proxy.messages.DrawCommands.DrawCommand.Builder addDrawCommandsBuilder() {
        return getDrawCommandsFieldBuilder().addBuilder(
            org.bwapi.proxy.messages.DrawCommands.DrawCommand.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public org.bwapi.proxy.messages.DrawCommands.DrawCommand.Builder addDrawCommandsBuilder(
          int index) {
        return getDrawCommandsFieldBuilder().addBuilder(
            index, org.bwapi.proxy.messages.DrawCommands.DrawCommand.getDefaultInstance());
      }
      /**
       * <code>repeated .messages.DrawCommand drawCommands = 6;</code>
       */
      public java.util.List<org.bwapi.proxy.messages.DrawCommands.DrawCommand.Builder> 
           getDrawCommandsBuilderList() {
        return getDrawCommandsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.bwapi.proxy.messages.DrawCommands.DrawCommand, org.bwapi.proxy.messages.DrawCommands.DrawCommand.Builder, org.bwapi.proxy.messages.DrawCommands.DrawCommandOrBuilder> 
          getDrawCommandsFieldBuilder() {
        if (drawCommandsBuilder_ == null) {
          drawCommandsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.bwapi.proxy.messages.DrawCommands.DrawCommand, org.bwapi.proxy.messages.DrawCommands.DrawCommand.Builder, org.bwapi.proxy.messages.DrawCommands.DrawCommandOrBuilder>(
                  drawCommands_,
                  ((bitField0_ & 0x00000020) == 0x00000020),
                  getParentForChildren(),
                  isClean());
          drawCommands_ = null;
        }
        return drawCommandsBuilder_;
      }

      // optional .messages.Position screenPosition = 7;
      private org.bwapi.proxy.messages.BasicTypes.Position screenPosition_ = org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.bwapi.proxy.messages.BasicTypes.Position, org.bwapi.proxy.messages.BasicTypes.Position.Builder, org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder> screenPositionBuilder_;
      /**
       * <code>optional .messages.Position screenPosition = 7;</code>
       */
      public boolean hasScreenPosition() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional .messages.Position screenPosition = 7;</code>
       */
      public org.bwapi.proxy.messages.BasicTypes.Position getScreenPosition() {
        if (screenPositionBuilder_ == null) {
          return screenPosition_;
        } else {
          return screenPositionBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .messages.Position screenPosition = 7;</code>
       */
      public Builder setScreenPosition(org.bwapi.proxy.messages.BasicTypes.Position value) {
        if (screenPositionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          screenPosition_ = value;
          onChanged();
        } else {
          screenPositionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .messages.Position screenPosition = 7;</code>
       */
      public Builder setScreenPosition(
          org.bwapi.proxy.messages.BasicTypes.Position.Builder builderForValue) {
        if (screenPositionBuilder_ == null) {
          screenPosition_ = builderForValue.build();
          onChanged();
        } else {
          screenPositionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .messages.Position screenPosition = 7;</code>
       */
      public Builder mergeScreenPosition(org.bwapi.proxy.messages.BasicTypes.Position value) {
        if (screenPositionBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040) &&
              screenPosition_ != org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance()) {
            screenPosition_ =
              org.bwapi.proxy.messages.BasicTypes.Position.newBuilder(screenPosition_).mergeFrom(value).buildPartial();
          } else {
            screenPosition_ = value;
          }
          onChanged();
        } else {
          screenPositionBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .messages.Position screenPosition = 7;</code>
       */
      public Builder clearScreenPosition() {
        if (screenPositionBuilder_ == null) {
          screenPosition_ = org.bwapi.proxy.messages.BasicTypes.Position.getDefaultInstance();
          onChanged();
        } else {
          screenPositionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }
      /**
       * <code>optional .messages.Position screenPosition = 7;</code>
       */
      public org.bwapi.proxy.messages.BasicTypes.Position.Builder getScreenPositionBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getScreenPositionFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .messages.Position screenPosition = 7;</code>
       */
      public org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder getScreenPositionOrBuilder() {
        if (screenPositionBuilder_ != null) {
          return screenPositionBuilder_.getMessageOrBuilder();
        } else {
          return screenPosition_;
        }
      }
      /**
       * <code>optional .messages.Position screenPosition = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.bwapi.proxy.messages.BasicTypes.Position, org.bwapi.proxy.messages.BasicTypes.Position.Builder, org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder> 
          getScreenPositionFieldBuilder() {
        if (screenPositionBuilder_ == null) {
          screenPositionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.bwapi.proxy.messages.BasicTypes.Position, org.bwapi.proxy.messages.BasicTypes.Position.Builder, org.bwapi.proxy.messages.BasicTypes.PositionOrBuilder>(
                  screenPosition_,
                  getParentForChildren(),
                  isClean());
          screenPosition_ = null;
        }
        return screenPositionBuilder_;
      }

      // optional string botName = 8;
      private java.lang.Object botName_ = "";
      /**
       * <code>optional string botName = 8;</code>
       */
      public boolean hasBotName() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional string botName = 8;</code>
       */
      public java.lang.String getBotName() {
        java.lang.Object ref = botName_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          botName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string botName = 8;</code>
       */
      public com.google.protobuf.ByteString
          getBotNameBytes() {
        java.lang.Object ref = botName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          botName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string botName = 8;</code>
       */
      public Builder setBotName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        botName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string botName = 8;</code>
       */
      public Builder clearBotName() {
        bitField0_ = (bitField0_ & ~0x00000080);
        botName_ = getDefaultInstance().getBotName();
        onChanged();
        return this;
      }
      /**
       * <code>optional string botName = 8;</code>
       */
      public Builder setBotNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        botName_ = value;
        onChanged();
        return this;
      }

      // optional string botCode = 9;
      private java.lang.Object botCode_ = "";
      /**
       * <code>optional string botCode = 9;</code>
       */
      public boolean hasBotCode() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional string botCode = 9;</code>
       */
      public java.lang.String getBotCode() {
        java.lang.Object ref = botCode_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          botCode_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string botCode = 9;</code>
       */
      public com.google.protobuf.ByteString
          getBotCodeBytes() {
        java.lang.Object ref = botCode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          botCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string botCode = 9;</code>
       */
      public Builder setBotCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        botCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string botCode = 9;</code>
       */
      public Builder clearBotCode() {
        bitField0_ = (bitField0_ & ~0x00000100);
        botCode_ = getDefaultInstance().getBotCode();
        onChanged();
        return this;
      }
      /**
       * <code>optional string botCode = 9;</code>
       */
      public Builder setBotCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        botCode_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:messages.FrameCommands)
    }

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

    // @@protoc_insertion_point(class_scope:messages.FrameCommands)
  }

  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_PlayerText_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_PlayerText_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_FrameMessage_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_FrameMessage_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_FrameCommands_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_FrameCommands_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\016aimodule.proto\022\010messages\032\nunit.proto\032\013" +
      "types.proto\032\rterrain.proto\032\rcommand.prot" +
      "o\032\ndraw.proto\"*\n\nPlayerText\022\016\n\006player\030\001 " +
      "\002(\005\022\014\n\004text\030\002 \002(\t\"\341\006\n\014FrameMessage\022\022\n\nfr" +
      "ameCount\030\001 \002(\005\022\016\n\006mouseX\030\033 \002(\005\022\016\n\006mouseY" +
      "\030\034 \002(\005\022\017\n\007screenX\030\004 \002(\005\022\017\n\007screenY\030\005 \002(\005" +
      "\022\035\n\005units\030\006 \003(\0132\016.messages.Unit\022!\n\007bulle" +
      "ts\030\003 \003(\0132\020.messages.Bullet\022!\n\007players\030\024 " +
      "\003(\0132\020.messages.Player\022&\n\014createdUnits\030\007 " +
      "\003(\0132\020.messages.UnitId\022(\n\016destroyedUnits\030",
      "\010 \003(\0132\020.messages.UnitId\022&\n\014morphedUnits\030" +
      "\t \003(\0132\020.messages.UnitId\022$\n\nshownUnits\030\n " +
      "\003(\0132\020.messages.UnitId\022%\n\013hiddenUnits\030\013 \003" +
      "(\0132\020.messages.UnitId\022(\n\016renegadedUnits\030\014" +
      " \003(\0132\020.messages.UnitId\022\023\n\013leftplayers\030\025 " +
      "\003(\005\022+\n\rreceivedTexts\030\026 \003(\0132\024.messages.Pl" +
      "ayerText\022\'\n\rselectedUnits\030\030 \003(\0132\020.messag" +
      "es.UnitId\022\020\n\010sentText\030\r \003(\t\022&\n\nnukeDetec" +
      "t\030\016 \001(\0132\022.messages.Position\022\016\n\006paused\030\017 " +
      "\002(\010\022\016\n\006replay\030\020 \002(\010\022\023\n\013multiplayer\030\021 \002(\010",
      "\022\020\n\010gameover\030\027 \001(\010\022\020\n\010isWinner\030\031 \001(\010\022*\n\016" +
      "screenPosition\030\032 \002(\0132\022.messages.Position" +
      "\022\017\n\007latency\030\035 \002(\005\0228\n\022dynamicTerrainInfo\030" +
      "\022 \002(\0132\034.messages.DynamicTerrainInfo\0220\n\013t" +
      "errainInfo\030\023 \001(\0132\033.messages.StaticTerrai" +
      "nInfo\"\203\002\n\rFrameCommands\022#\n\010commands\030\001 \003(" +
      "\0132\021.messages.Command\022\021\n\tgameSpeed\030\002 \001(\021\022" +
      "\020\n\010sendText\030\003 \003(\t\022\016\n\006printf\030\004 \003(\t\022\035\n\005fla" +
      "gs\030\005 \003(\0162\016.messages.Flag\022+\n\014drawCommands" +
      "\030\006 \003(\0132\025.messages.DrawCommand\022*\n\016screenP",
      "osition\030\007 \001(\0132\022.messages.Position\022\017\n\007bot" +
      "Name\030\010 \001(\t\022\017\n\007botCode\030\t \001(\t*1\n\004Flag\022\032\n\026C" +
      "ompleteMapInformation\020\000\022\r\n\tUserInput\020\001B$" +
      "\n\030org.bwapi.proxy.messagesB\010Messages"
    };
    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_messages_PlayerText_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_messages_PlayerText_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_PlayerText_descriptor,
              new java.lang.String[] { "Player", "Text", });
          internal_static_messages_FrameMessage_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_messages_FrameMessage_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_FrameMessage_descriptor,
              new java.lang.String[] { "FrameCount", "MouseX", "MouseY", "ScreenX", "ScreenY", "Units", "Bullets", "Players", "CreatedUnits", "DestroyedUnits", "MorphedUnits", "ShownUnits", "HiddenUnits", "RenegadedUnits", "Leftplayers", "ReceivedTexts", "SelectedUnits", "SentText", "NukeDetect", "Paused", "Replay", "Multiplayer", "Gameover", "IsWinner", "ScreenPosition", "Latency", "DynamicTerrainInfo", "TerrainInfo", });
          internal_static_messages_FrameCommands_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_messages_FrameCommands_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_FrameCommands_descriptor,
              new java.lang.String[] { "Commands", "GameSpeed", "SendText", "Printf", "Flags", "DrawCommands", "ScreenPosition", "BotName", "BotCode", });
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          org.bwapi.proxy.messages.GameMessages.getDescriptor(),
          org.bwapi.proxy.messages.BasicTypes.getDescriptor(),
          org.bwapi.proxy.messages.TerrainMessages.getDescriptor(),
          org.bwapi.proxy.messages.Commands.getDescriptor(),
          org.bwapi.proxy.messages.DrawCommands.getDescriptor(),
        }