// Path: src/main/java/io/datanerds/avropatch/value/DefaultSchema.java
// public interface DefaultSchema {
//     String VALUE =
//             "[{"
//                     + "    \"type\": \"record\","
//                     + "    \"name\": \"decimal\","
//                     + "    \"fields\": [{"
//                     + "        \"name\": \"unscaledValue\","
//                     + "        \"type\": {"
//                     + "            \"type\": \"bytes\","
//                     + "            \"logicalType\": \"big-integer\""
//                     + "        }"
//                     + "    }, {"
//                     + "        \"name\": \"scale\","
//                     + "        \"type\": \"int\""
//                     + "    }],"
//                     + "    \"logicalType\": \"big-decimal\""
//                     + "}, {"
//                     + "    \"type\": \"bytes\","
//                     + "    \"logicalType\": \"big-integer\""
//                     + "}, \"boolean\", {"
//                     + "    \"type\": \"fixed\","
//                     + "    \"name\": \"timestamp\","
//                     + "    \"size\": 8,"
//                     + "    \"logicalType\": \"timestamp\""
//                     + "}, \"double\", \"float\", \"int\", \"long\", \"null\", \"string\", {"
//                     + "    \"type\": \"fixed\","
//                     + "    \"name\": \"uuid\","
//                     + "    \"size\": 16,"
//                     + "    \"logicalType\": \"uuid\""
//                     + "}, {"
//                     + "    \"type\": \"array\","
//                     + "    \"items\": [\"decimal\", {"
//                     + "        \"type\": \"bytes\","
//                     + "        \"logicalType\": \"big-integer\""
//                     + "    }, \"boolean\", \"timestamp\", \"double\", \"float\", \"int\", \"long\", \"null\", \"string\", \"uuid\"]"
//                     + "}, {\n"
//                     + "    \"type\": \"map\","
//                     + "    \"values\": [\"decimal\", {"
//                     + "        \"type\": \"bytes\","
//                     + "        \"logicalType\": \"big-integer\""
//                     + "    }, \"boolean\", \"timestamp\", \"double\", \"float\", \"int\", \"long\", \"null\", \"string\", \"uuid\"]"
//                     + "}]";
// 
//     String HEADERS =
//             "{\n"
//                     + "    \"type\": \"map\",\n"
//                     + "    \"values\": [\"boolean\", \"double\", \"float\", \"int\", \"long\", \"string\", {\n"
//                     + "        \"type\": \"record\",\n"
//                     + "        \"name\": \"decimal\",\n"
//                     + "        \"doc\": \"BigDecimal value represented via it's scale and unscaled value.\",\n"
//                     + "        \"fields\": [{\n"
//                     + "            \"name\": \"unscaledValue\",\n"
//                     + "            \"type\": {\n"
//                     + "                \"type\": \"bytes\",\n"
//                     + "                \"logicalType\": \"big-integer\"\n"
//                     + "            }\n"
//                     + "        }, {\n"
//                     + "            \"name\": \"scale\",\n"
//                     + "            \"type\": \"int\"\n"
//                     + "        }],\n"
//                     + "        \"logicalType\": \"big-decimal\"\n"
//                     + "    }, {\n"
//                     + "        \"type\": \"bytes\",\n"
//                     + "        \"logicalType\": \"big-integer\"\n"
//                     + "    }, {\n"
//                     + "        \"type\": \"fixed\",\n"
//                     + "        \"name\": \"timestamp\",\n"
//                     + "        \"doc\": \"Timestamp representing the number of milliseconds since January 1, 1970, 00:00:00 GMT\",\n"
//                     + "        \"size\": 8,\n"
//                     + "        \"logicalType\": \"timestamp\"\n"
//                     + "    }, {\n"
//                     + "        \"type\": \"fixed\",\n"
//                     + "        \"name\": \"uuid\",\n"
//                     + "        \"doc\": \"UUID serialized via two long values: It's most significant and least significant 64 bits.\",\n"
//                     + "        \"size\": 16,\n"
//                     + "        \"logicalType\": \"uuid\"\n"
//                     + "    }]\n"
//                     + "}";
//     String TIMESTAMP =
//             "{"
//                     + "    \"type\": \"fixed\","
//                     + "    \"name\": \"timestamp\","
//                     + "    \"size\": 8,"
//                     + "    \"logicalType\": \"timestamp\""
//                     + "}";
// }


import io.datanerds.avropatch.value.DefaultSchema;
import org.apache.avro.reflect.AvroSchema;
import javax.annotation.Generated;
import java.util.Objects;
package io.datanerds.avropatch.operation;



/**
 * This class represents the "replace" operation of RFC 6902 'JavaScript Object Notation (JSON) Patch'.
 *
 * @see <a href="https://tools.ietf.org/html/rfc6902#section-4.3">https://tools.ietf.org/html/rfc6902#section-4.3</a>
 */
public final class Replace<T> implements Operation {
    public final Path path;
// Path: src/main/java/io/datanerds/avropatch/value/DefaultSchema.java
// public interface DefaultSchema {
//     String VALUE =
//             "[{"
//                     + "    \"type\": \"record\","
//                     + "    \"name\": \"decimal\","
//                     + "    \"fields\": [{"
//                     + "        \"name\": \"unscaledValue\","
//                     + "        \"type\": {"
//                     + "            \"type\": \"bytes\","
//                     + "            \"logicalType\": \"big-integer\""
//                     + "        }"
//                     + "    }, {"
//                     + "        \"name\": \"scale\","
//                     + "        \"type\": \"int\""
//                     + "    }],"
//                     + "    \"logicalType\": \"big-decimal\""
//                     + "}, {"
//                     + "    \"type\": \"bytes\","
//                     + "    \"logicalType\": \"big-integer\""
//                     + "}, \"boolean\", {"
//                     + "    \"type\": \"fixed\","
//                     + "    \"name\": \"timestamp\","
//                     + "    \"size\": 8,"
//                     + "    \"logicalType\": \"timestamp\""
//                     + "}, \"double\", \"float\", \"int\", \"long\", \"null\", \"string\", {"
//                     + "    \"type\": \"fixed\","
//                     + "    \"name\": \"uuid\","
//                     + "    \"size\": 16,"
//                     + "    \"logicalType\": \"uuid\""
//                     + "}, {"
//                     + "    \"type\": \"array\","
//                     + "    \"items\": [\"decimal\", {"
//                     + "        \"type\": \"bytes\","
//                     + "        \"logicalType\": \"big-integer\""
//                     + "    }, \"boolean\", \"timestamp\", \"double\", \"float\", \"int\", \"long\", \"null\", \"string\", \"uuid\"]"
//                     + "}, {\n"
//                     + "    \"type\": \"map\","
//                     + "    \"values\": [\"decimal\", {"
//                     + "        \"type\": \"bytes\","
//                     + "        \"logicalType\": \"big-integer\""
//                     + "    }, \"boolean\", \"timestamp\", \"double\", \"float\", \"int\", \"long\", \"null\", \"string\", \"uuid\"]"
//                     + "}]";
// 
//     String HEADERS =
//             "{\n"
//                     + "    \"type\": \"map\",\n"
//                     + "    \"values\": [\"boolean\", \"double\", \"float\", \"int\", \"long\", \"string\", {\n"
//                     + "        \"type\": \"record\",\n"
//                     + "        \"name\": \"decimal\",\n"
//                     + "        \"doc\": \"BigDecimal value represented via it's scale and unscaled value.\",\n"
//                     + "        \"fields\": [{\n"
//                     + "            \"name\": \"unscaledValue\",\n"
//                     + "            \"type\": {\n"
//                     + "                \"type\": \"bytes\",\n"
//                     + "                \"logicalType\": \"big-integer\"\n"
//                     + "            }\n"
//                     + "        }, {\n"
//                     + "            \"name\": \"scale\",\n"
//                     + "            \"type\": \"int\"\n"
//                     + "        }],\n"
//                     + "        \"logicalType\": \"big-decimal\"\n"
//                     + "    }, {\n"
//                     + "        \"type\": \"bytes\",\n"
//                     + "        \"logicalType\": \"big-integer\"\n"
//                     + "    }, {\n"
//                     + "        \"type\": \"fixed\",\n"
//                     + "        \"name\": \"timestamp\",\n"
//                     + "        \"doc\": \"Timestamp representing the number of milliseconds since January 1, 1970, 00:00:00 GMT\",\n"
//                     + "        \"size\": 8,\n"
//                     + "        \"logicalType\": \"timestamp\"\n"
//                     + "    }, {\n"
//                     + "        \"type\": \"fixed\",\n"
//                     + "        \"name\": \"uuid\",\n"
//                     + "        \"doc\": \"UUID serialized via two long values: It's most significant and least significant 64 bits.\",\n"
//                     + "        \"size\": 16,\n"
//                     + "        \"logicalType\": \"uuid\"\n"
//                     + "    }]\n"
//                     + "}";
//     String TIMESTAMP =
//             "{"
//                     + "    \"type\": \"fixed\","
//                     + "    \"name\": \"timestamp\","
//                     + "    \"size\": 8,"
//                     + "    \"logicalType\": \"timestamp\""
//                     + "}";
// }


// Path: src/main/java/io/datanerds/avropatch/operation/Replace.java
import io.datanerds.avropatch.value.DefaultSchema;
import org.apache.avro.reflect.AvroSchema;
import javax.annotation.Generated;
import java.util.Objects;

package io.datanerds.avropatch.operation;



/**
 * This class represents the "replace" operation of RFC 6902 'JavaScript Object Notation (JSON) Patch'.
 *
 * @see <a href="https://tools.ietf.org/html/rfc6902#section-4.3">https://tools.ietf.org/html/rfc6902#section-4.3</a>
 */
public final class Replace<T> implements Operation {
    public final Path path;
    @AvroSchema(DefaultSchema.VALUE)