{
  "findings": [
    {
      "hash": "1b6b514f",
      "direction": "Backward",
      "kind": "Deleted_type",
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 1, "column": 0 },
        "end": { "path": "all_errors_old.atd", "line": 1, "column": 18 }
      },
      "description": "The definition for type 'deleted' no longer exists.",
      "affected_types": [ "deleted" ]
    },
    {
      "hash": "158ae3ef",
      "direction": "Forward",
      "kind": [ "Missing_field", { "field_name": "deleted_field" } ],
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 4, "column": 2 },
        "end": { "path": "all_errors_old.atd", "line": 4, "column": 20 }
      },
      "description": "Required field 'deleted_field' disappeared.",
      "affected_types": [ "changed_record", "indirect_changes" ]
    },
    {
      "hash": "15e4e116",
      "direction": "Forward",
      "kind": [ "Missing_field", { "field_name": "renamed_field" } ],
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 9, "column": 2 },
        "end": { "path": "all_errors_old.atd", "line": 9, "column": 20 }
      },
      "description": "Required field 'renamed_field' disappeared.",
      "affected_types": [ "changed_record", "indirect_changes" ]
    },
    {
      "hash": "31591865",
      "direction": "Backward",
      "kind": [ "Missing_variant", { "variant_name": "Deleted_case" } ],
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 13, "column": 4 },
        "end": { "path": "all_errors_old.atd", "line": 13, "column": 16 }
      },
      "description": "Case 'Deleted_case' disappeared.",
      "affected_types": [ "changed_variant", "indirect_changes" ]
    },
    {
      "hash": "3d0bf6cf",
      "direction": "Backward",
      "kind": [
        "Missing_variant", { "variant_name": "Deleted_case_with_arg" }
      ],
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 14, "column": 4 },
        "end": { "path": "all_errors_old.atd", "line": 14, "column": 35 }
      },
      "description": "Case 'Deleted_case_with_arg' disappeared.",
      "affected_types": [ "changed_variant", "indirect_changes" ]
    },
    {
      "hash": "3669ce41",
      "direction": "Forward",
      "kind": "Deleted_type",
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 1, "column": 0 },
        "end": { "path": "all_errors_new.atd", "line": 1, "column": 18 }
      },
      "description": "There is a new type named 'created'.",
      "affected_types": [ "created" ]
    },
    {
      "hash": "29c893c7",
      "direction": "Backward",
      "kind": [ "Missing_field", { "field_name": "new_field" } ],
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 4, "column": 2 },
        "end": { "path": "all_errors_new.atd", "line": 4, "column": 16 }
      },
      "description": "Required field 'new_field' is new.",
      "affected_types": [ "changed_record", "indirect_changes" ]
    },
    {
      "hash": "144944d4",
      "direction": "Backward",
      "kind": [ "Missing_field", { "field_name": "RENAMED_FIELD" } ],
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 9, "column": 2 },
        "end": { "path": "all_errors_new.atd", "line": 9, "column": 48 }
      },
      "description": "Required field 'RENAMED_FIELD' is new.",
      "affected_types": [ "changed_record", "indirect_changes" ]
    },
    {
      "hash": "2517ca31",
      "direction": "Forward",
      "kind": [ "Missing_variant", { "variant_name": "New_case" } ],
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 13, "column": 4 },
        "end": { "path": "all_errors_new.atd", "line": 13, "column": 12 }
      },
      "description": "Case 'New_case' is new.",
      "affected_types": [ "changed_variant", "indirect_changes" ]
    },
    {
      "hash": "17632fe1",
      "direction": "Forward",
      "kind": [ "Missing_variant", { "variant_name": "New_case_with_arg" } ],
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 14, "column": 4 },
        "end": { "path": "all_errors_new.atd", "line": 14, "column": 28 }
      },
      "description": "Case 'New_case_with_arg' is new.",
      "affected_types": [ "changed_variant", "indirect_changes" ]
    },
    {
      "hash": "3f56a184",
      "direction": "Forward",
      "kind": [ "Missing_field", { "field_name": "becomes_optional" } ],
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 5, "column": 2 },
        "end": { "path": "all_errors_old.atd", "line": 5, "column": 23 }
      },
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 5, "column": 2 },
        "end": { "path": "all_errors_new.atd", "line": 5, "column": 31 }
      },
      "description": "Formerly required field 'becomes_optional' is now optional.",
      "affected_types": [ "changed_record", "indirect_changes" ]
    },
    {
      "hash": "190e42a9",
      "direction": "Forward",
      "kind": [
        "Default_required", { "field_name": "becomes_optional_with_default" }
      ],
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 6, "column": 2 },
        "end": { "path": "all_errors_old.atd", "line": 6, "column": 36 }
      },
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 6, "column": 2 },
        "end": { "path": "all_errors_new.atd", "line": 6, "column": 37 }
      },
      "description": "Formerly required field 'becomes_optional_with_default' is now optional but has a default value.\nYou must ensure that new implementations always populate the JSON field\nwith a value (using atdgen's option -j-defaults or equivalent) so that older\nimplementations can read newer data. If this is already the case, use\n'atddiff --json-defaults-new' to disable this warning.",
      "affected_types": [ "changed_record", "indirect_changes" ]
    },
    {
      "hash": "2483323d",
      "direction": "Backward",
      "kind": [ "Missing_field", { "field_name": "becomes_required" } ],
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 7, "column": 2 },
        "end": { "path": "all_errors_old.atd", "line": 7, "column": 31 }
      },
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 7, "column": 2 },
        "end": { "path": "all_errors_new.atd", "line": 7, "column": 23 }
      },
      "description": "Formerly optional field 'becomes_required' is now required.",
      "affected_types": [ "changed_record", "indirect_changes" ]
    },
    {
      "hash": "029d6a0f",
      "direction": "Backward",
      "kind": [
        "Default_required", { "field_name": "with_default_becomes_required" }
      ],
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 8, "column": 2 },
        "end": { "path": "all_errors_old.atd", "line": 8, "column": 37 }
      },
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 8, "column": 2 },
        "end": { "path": "all_errors_new.atd", "line": 8, "column": 36 }
      },
      "description": "Newly required field 'with_default_becomes_required' was optional but had a default value.\nIf old implementations in use always populate the JSON field\nwith a value (using atdgen's option -j-defaults or equivalent),\nthen there's no problem and you should use\n'atddiff --json-defaults-old' to disable this warning.",
      "affected_types": [ "changed_record", "indirect_changes" ]
    },
    {
      "hash": "14e1a0cb",
      "direction": "Both",
      "kind": [ "Missing_variant_argument", { "variant_name": "Added_arg" } ],
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 15, "column": 4 },
        "end": { "path": "all_errors_old.atd", "line": 15, "column": 13 }
      },
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 15, "column": 4 },
        "end": { "path": "all_errors_new.atd", "line": 15, "column": 22 }
      },
      "description": "Case 'Added_arg' used to not have an argument.",
      "affected_types": [ "changed_variant", "indirect_changes" ]
    },
    {
      "hash": "0e0c3d69",
      "direction": "Both",
      "kind": [
        "Missing_variant_argument", { "variant_name": "Removed_arg" }
      ],
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 16, "column": 4 },
        "end": { "path": "all_errors_old.atd", "line": 16, "column": 22 }
      },
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 16, "column": 4 },
        "end": { "path": "all_errors_new.atd", "line": 16, "column": 15 }
      },
      "description": "Case 'Removed_arg' no longer has an argument.",
      "affected_types": [ "changed_variant", "indirect_changes" ]
    },
    {
      "hash": "01efeb01",
      "direction": "Both",
      "kind": "Incompatible_type",
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 17, "column": 18 },
        "end": { "path": "all_errors_old.atd", "line": 17, "column": 22 }
      },
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 17, "column": 18 },
        "end": { "path": "all_errors_new.atd", "line": 17, "column": 23 }
      },
      "description": "Type names 'int' and 'bool' are not the same and may not be compatible.",
      "affected_types": [ "changed_variant", "indirect_changes" ]
    },
    {
      "hash": "09d11702",
      "direction": "Both",
      "kind": "Incompatible_type",
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 26, "column": 20 },
        "end": { "path": "all_errors_old.atd", "line": 26, "column": 60 }
      },
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 26, "column": 20 },
        "end": { "path": "all_errors_new.atd", "line": 26, "column": 39 }
      },
      "description": "Incompatible kinds of types: map is now a list/array.",
      "affected_types": [ "changed_map1" ]
    },
    {
      "hash": "2ddece43",
      "direction": "Both",
      "kind": "Incompatible_type",
      "location_old": {
        "start": { "path": "all_errors_old.atd", "line": 27, "column": 20 },
        "end": { "path": "all_errors_old.atd", "line": 27, "column": 39 }
      },
      "location_new": {
        "start": { "path": "all_errors_new.atd", "line": 27, "column": 20 },
        "end": { "path": "all_errors_new.atd", "line": 27, "column": 60 }
      },
      "description": "Incompatible kinds of types: list/array is now a map.",
      "affected_types": [ "changed_map2" ]
    }
  ]
}
