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