@Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;

        ConnectRecord<?> that = (ConnectRecord<?>) o;

        return Objects.equals(kafkaPartition, that.kafkaPartition)
               && Objects.equals(topic, that.topic)
               && Objects.equals(keySchema, that.keySchema)
               && Objects.equals(key, that.key)
               && Objects.equals(valueSchema, that.valueSchema)
               && Objects.equals(value, that.value)
               && Objects.equals(timestamp, that.timestamp)
               && Objects.equals(headers, that.headers);
    }
Create a new record of the same type as itself, with the specified parameter values. All other fields in this record will be copied
over to the new record.

@param topic the name of the topic; may be null
@param kafkaPartition the partition number for the Kafka topic; may be null
@param keySchema the schema for the key; may be null
@param key the key; may be null
@param valueSchema the schema for the value; may be null
@param value the value; may be null
@param timestamp the timestamp; may be null
@param headers the headers; may be null or empty
@return the new record
connect/api/src/main/java/org/apache/kafka/connect/connector/ConnectRecord.java