@Override
    public int hashCode() {
        int result = topic != null ? topic.hashCode() : 0;
        result = 31 * result + (kafkaPartition != null ? kafkaPartition.hashCode() : 0);
        result = 31 * result + (keySchema != null ? keySchema.hashCode() : 0);
        result = 31 * result + (key != null ? key.hashCode() : 0);
        result = 31 * result + (valueSchema != null ? valueSchema.hashCode() : 0);
        result = 31 * result + (value != null ? value.hashCode() : 0);
        result = 31 * result + (timestamp != null ? timestamp.hashCode() : 0);
        result = 31 * result + headers.hashCode();
        return result;
    }
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