public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              JInPiqi.init.Builder subBuilder = JInPiqi.init.newBuilder();
              if (hasInit()) {
                subBuilder.mergeFrom(getInit());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setInit(subBuilder.buildPartial());
              break;
            }
            case 18: {
              JInPiqi.handle_user_join.Builder subBuilder = JInPiqi.handle_user_join.newBuilder();
              if (hasHandleUserJoin()) {
                subBuilder.mergeFrom(getHandleUserJoin());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setHandleUserJoin(subBuilder.buildPartial());
              break;
            }
            case 26: {
              JInPiqi.handle_user_leave.Builder subBuilder = JInPiqi.handle_user_leave.newBuilder();
              if (hasHandleUserLeave()) {
                subBuilder.mergeFrom(getHandleUserLeave());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setHandleUserLeave(subBuilder.buildPartial());
              break;
            }
            case 34: {
              JInPiqi.handle_action.Builder subBuilder = JInPiqi.handle_action.newBuilder();
              if (hasHandleAction()) {
                subBuilder.mergeFrom(getHandleAction());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setHandleAction(subBuilder.buildPartial());
              break;
            }
            case 42: {
              JInPiqi.handle_timer.Builder subBuilder = JInPiqi.handle_timer.newBuilder();
              if (hasHandleTimer()) {
                subBuilder.mergeFrom(getHandleTimer());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setHandleTimer(subBuilder.buildPartial());
              break;
            }
            case 50: {
              JInPiqi.handle_timer_complete.Builder subBuilder = JInPiqi.handle_timer_complete.newBuilder();
              if (hasHandleTimerComplete()) {
                subBuilder.mergeFrom(getHandleTimerComplete());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setHandleTimerComplete(subBuilder.buildPartial());
              break;
            }
            case 58: {
              JSystemPiqi.system_response.Builder subBuilder = JSystemPiqi.system_response.newBuilder();
              if (hasSystem()) {
                subBuilder.mergeFrom(getSystem());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setSystem(subBuilder.buildPartial());
              break;
            }
          }
        }
      }