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