Generate Java/Cpp files for VehicleProperty annotations.

Extract annotations for each property and put them into a map.

We need to use these generated files in car service code and VTS
code.

Flag: EXEMPT internal change
Test: atest VehiclePropertyAnnotationCppTest \
VehiclePropertyAnnotationJavaTest
Bug: 388603905

Change-Id: Iadea6b4de182afaf006d9d9603d014e84e307fd9
diff --git a/automotive/vehicle/aidl/aidl_test/Android.bp b/automotive/vehicle/aidl/aidl_test/Android.bp
index a87af02..d3ce307 100644
--- a/automotive/vehicle/aidl/aidl_test/Android.bp
+++ b/automotive/vehicle/aidl/aidl_test/Android.bp
@@ -43,6 +43,10 @@
     team: "trendy_team_aaos_carframework_triage",
     srcs: ["VehiclePropertyAnnotationCppTest.cpp"],
     header_libs: ["IVehicleGeneratedHeaders-V4"],
+    static_libs: [
+        "libgtest",
+        "libgmock",
+    ],
     defaults: ["VehicleHalInterfaceDefaults"],
     test_suites: ["general-tests"],
 }
diff --git a/automotive/vehicle/aidl/aidl_test/VehiclePropertyAnnotationCppTest.cpp b/automotive/vehicle/aidl/aidl_test/VehiclePropertyAnnotationCppTest.cpp
index a4bbbe8..2aad2b6 100644
--- a/automotive/vehicle/aidl/aidl_test/VehiclePropertyAnnotationCppTest.cpp
+++ b/automotive/vehicle/aidl/aidl_test/VehiclePropertyAnnotationCppTest.cpp
@@ -15,16 +15,20 @@
  */
 
 #include <AccessForVehicleProperty.h>
+#include <AnnotationsForVehicleProperty.h>
 #include <ChangeModeForVehicleProperty.h>
 
 #include <aidl/android/hardware/automotive/vehicle/VehicleProperty.h>
+#include <gmock/gmock.h>
 #include <gtest/gtest.h>
 #include <unordered_set>
 
 namespace aidl_vehicle = ::aidl::android::hardware::automotive::vehicle;
 using aidl_vehicle::AccessForVehicleProperty;
+using aidl_vehicle::AnnotationsForVehicleProperty;
 using aidl_vehicle::ChangeModeForVehicleProperty;
 using aidl_vehicle::VehicleProperty;
+using testing::IsEmpty;
 
 namespace {
     template<class T>
@@ -54,3 +58,11 @@
             << "Outdated annotation-generated AIDL files. Please run "
             << "generate_annotation_enums.py to update.";
 }
+
+TEST(VehiclePropertyAnnotationCppTest, testAnnotations) {
+    for (const auto& [propertyId, annotations] : AnnotationsForVehicleProperty) {
+        ASSERT_THAT(annotations, Not(IsEmpty()))
+                << "annotations set for property: " << aidl_vehicle::toString(propertyId)
+                << " must not be empty";
+    }
+}
diff --git a/automotive/vehicle/aidl/aidl_test/VehiclePropertyAnnotationJavaTest.java b/automotive/vehicle/aidl/aidl_test/VehiclePropertyAnnotationJavaTest.java
index ef49299..8aab7ad 100644
--- a/automotive/vehicle/aidl/aidl_test/VehiclePropertyAnnotationJavaTest.java
+++ b/automotive/vehicle/aidl/aidl_test/VehiclePropertyAnnotationJavaTest.java
@@ -57,4 +57,15 @@
                 .that(doesAnnotationMapContainsAllProps(AccessForVehicleProperty.values))
                 .isTrue();
     }
+
+    @Test
+    @SmallTest
+    public void testAnnotations() {
+        for (int propertyId : AnnotationsForVehicleProperty.values.keySet()) {
+            assertWithMessage("annotations set for property: "
+                    + VehicleProperty.$.toString(propertyId) + " must not be empty")
+                    .that(AnnotationsForVehicleProperty.values.get(propertyId))
+                    .isNotEmpty();
+        }
+    }
 }
\ No newline at end of file
diff --git a/automotive/vehicle/aidl/generated_lib/4/cpp/AnnotationsForVehicleProperty.h b/automotive/vehicle/aidl/generated_lib/4/cpp/AnnotationsForVehicleProperty.h
new file mode 100644
index 0000000..8ff370a
--- /dev/null
+++ b/automotive/vehicle/aidl/generated_lib/4/cpp/AnnotationsForVehicleProperty.h
@@ -0,0 +1,327 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * DO NOT EDIT MANUALLY!!!
+ *
+ * Generated by tools/generate_annotation_enums.py.
+ */
+
+// clang-format off
+
+#pragma once
+
+#include <aidl/android/hardware/automotive/vehicle/VehicleProperty.h>
+
+#include <string>
+#include <unordered_map>
+#include <unordered_set>
+
+namespace aidl {
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+
+std::unordered_map<VehicleProperty, std::unordered_set<std::string>>
+        AnnotationsForVehicleProperty = {
+        {VehicleProperty::INFO_VIN, {"change_mode", "access", "version"}},
+        {VehicleProperty::INFO_MAKE, {"change_mode", "access", "version"}},
+        {VehicleProperty::INFO_MODEL, {"change_mode", "access", "version"}},
+        {VehicleProperty::INFO_MODEL_YEAR, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::INFO_FUEL_CAPACITY, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::INFO_FUEL_TYPE, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::INFO_EV_BATTERY_CAPACITY, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::INFO_EV_CONNECTOR_TYPE, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::INFO_FUEL_DOOR_LOCATION, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::INFO_EV_PORT_LOCATION, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::INFO_DRIVER_SEAT, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::INFO_EXTERIOR_DIMENSIONS, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::INFO_MULTI_EV_PORT_LOCATIONS, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::INFO_MODEL_TRIM, {"change_mode", "access", "version"}},
+        {VehicleProperty::INFO_VEHICLE_SIZE_CLASS, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::PERF_ODOMETER, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::PERF_VEHICLE_SPEED, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::PERF_VEHICLE_SPEED_DISPLAY, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::PERF_STEERING_ANGLE, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::PERF_REAR_STEERING_ANGLE, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::INSTANTANEOUS_FUEL_ECONOMY, {"change_mode", "access", "version"}},
+        {VehicleProperty::INSTANTANEOUS_EV_EFFICIENCY, {"change_mode", "access", "version"}},
+        {VehicleProperty::ENGINE_COOLANT_TEMP, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::ENGINE_OIL_LEVEL, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::ENGINE_OIL_TEMP, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::ENGINE_RPM, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::WHEEL_TICK, {"change_mode", "access", "version"}},
+        {VehicleProperty::FUEL_LEVEL, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::FUEL_DOOR_OPEN, {"change_mode", "access", "version"}},
+        {VehicleProperty::EV_BATTERY_LEVEL, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::EV_CURRENT_BATTERY_CAPACITY, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::EV_CHARGE_PORT_OPEN, {"change_mode", "access", "version"}},
+        {VehicleProperty::EV_CHARGE_PORT_CONNECTED, {"change_mode", "access", "version"}},
+        {VehicleProperty::EV_BATTERY_INSTANTANEOUS_CHARGE_RATE, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::RANGE_REMAINING, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::EV_BATTERY_AVERAGE_TEMPERATURE, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::TIRE_PRESSURE, {"change_mode", "unit", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::CRITICALLY_LOW_TIRE_PRESSURE, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::ACCELERATOR_PEDAL_COMPRESSION_PERCENTAGE, {"change_mode", "access", "version"}},
+        {VehicleProperty::BRAKE_PEDAL_COMPRESSION_PERCENTAGE, {"change_mode", "access", "version"}},
+        {VehicleProperty::BRAKE_PAD_WEAR_PERCENTAGE, {"change_mode", "access", "version"}},
+        {VehicleProperty::BRAKE_FLUID_LEVEL_LOW, {"change_mode", "access", "version"}},
+        {VehicleProperty::VEHICLE_PASSIVE_SUSPENSION_HEIGHT, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::ENGINE_IDLE_AUTO_STOP_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::IMPACT_DETECTED, {"change_mode", "access", "require_supported_values_list", "version", "data_enum", "data_enum_bit_flags"}},
+        {VehicleProperty::VEHICLE_HORN_ENGAGED, {"change_mode", "access", "version"}},
+        {VehicleProperty::GEAR_SELECTION, {"change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::CURRENT_GEAR, {"change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::PARKING_BRAKE_ON, {"change_mode", "access", "version"}},
+        {VehicleProperty::PARKING_BRAKE_AUTO_APPLY, {"change_mode", "access", "version"}},
+        {VehicleProperty::EV_BRAKE_REGENERATION_LEVEL, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::FUEL_LEVEL_LOW, {"change_mode", "access", "version"}},
+        {VehicleProperty::NIGHT_MODE, {"change_mode", "access", "version"}},
+        {VehicleProperty::TURN_SIGNAL_STATE, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::IGNITION_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::ABS_ACTIVE, {"change_mode", "access", "version"}},
+        {VehicleProperty::TRACTION_CONTROL_ACTIVE, {"change_mode", "access", "version"}},
+        {VehicleProperty::EV_STOPPING_MODE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::ELECTRONIC_STABILITY_CONTROL_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::ELECTRONIC_STABILITY_CONTROL_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::TURN_SIGNAL_LIGHT_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum", "data_enum_bit_flags"}},
+        {VehicleProperty::TURN_SIGNAL_SWITCH, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::HVAC_FAN_SPEED, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::HVAC_FAN_DIRECTION, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::HVAC_TEMPERATURE_CURRENT, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::HVAC_TEMPERATURE_SET, {"change_mode", "unit", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::HVAC_DEFROSTER, {"change_mode", "access", "version"}},
+        {VehicleProperty::HVAC_AC_ON, {"change_mode", "access", "version"}},
+        {VehicleProperty::HVAC_MAX_AC_ON, {"change_mode", "access", "version"}},
+        {VehicleProperty::HVAC_MAX_DEFROST_ON, {"change_mode", "access", "version"}},
+        {VehicleProperty::HVAC_RECIRC_ON, {"change_mode", "access", "version"}},
+        {VehicleProperty::HVAC_DUAL_ON, {"change_mode", "access", "version"}},
+        {VehicleProperty::HVAC_AUTO_ON, {"change_mode", "access", "version"}},
+        {VehicleProperty::HVAC_SEAT_TEMPERATURE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::HVAC_SIDE_MIRROR_HEAT, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::HVAC_STEERING_WHEEL_HEAT, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::HVAC_TEMPERATURE_DISPLAY_UNITS, {"change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::HVAC_ACTUAL_FAN_SPEED_RPM, {"change_mode", "access", "version"}},
+        {VehicleProperty::HVAC_POWER_ON, {"change_mode", "access", "version"}},
+        {VehicleProperty::HVAC_FAN_DIRECTION_AVAILABLE, {"change_mode", "access", "version", "data_enum", "data_enum_bit_flags"}},
+        {VehicleProperty::HVAC_AUTO_RECIRC_ON, {"change_mode", "access", "version"}},
+        {VehicleProperty::HVAC_SEAT_VENTILATION, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::HVAC_ELECTRIC_DEFROSTER_ON, {"change_mode", "access", "version"}},
+        {VehicleProperty::HVAC_TEMPERATURE_VALUE_SUGGESTION, {"change_mode", "access", "version"}},
+        {VehicleProperty::DISTANCE_DISPLAY_UNITS, {"change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::FUEL_VOLUME_DISPLAY_UNITS, {"change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::TIRE_PRESSURE_DISPLAY_UNITS, {"change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::EV_BATTERY_DISPLAY_UNITS, {"change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME, {"change_mode", "access", "version"}},
+        {VehicleProperty::VEHICLE_SPEED_DISPLAY_UNITS, {"change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::EXTERNAL_CAR_TIME, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::ANDROID_EPOCH_TIME, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::STORAGE_ENCRYPTION_BINDING_SEED, {"change_mode", "access", "version"}},
+        {VehicleProperty::ENV_OUTSIDE_TEMPERATURE, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::AP_POWER_STATE_REQ, {"change_mode", "access", "version"}},
+        {VehicleProperty::AP_POWER_STATE_REPORT, {"change_mode", "access", "version"}},
+        {VehicleProperty::AP_POWER_BOOTUP_REASON, {"change_mode", "access", "version"}},
+        {VehicleProperty::DISPLAY_BRIGHTNESS, {"change_mode", "access", "version"}},
+        {VehicleProperty::PER_DISPLAY_BRIGHTNESS, {"change_mode", "access", "version"}},
+        {VehicleProperty::VALET_MODE_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::HEAD_UP_DISPLAY_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::HW_KEY_INPUT, {"change_mode", "access", "version"}},
+        {VehicleProperty::HW_KEY_INPUT_V2, {"change_mode", "access", "version"}},
+        {VehicleProperty::HW_MOTION_INPUT, {"change_mode", "access", "version"}},
+        {VehicleProperty::HW_ROTARY_INPUT, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::HW_CUSTOM_INPUT, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::DOOR_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::DOOR_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::DOOR_LOCK, {"change_mode", "access", "version"}},
+        {VehicleProperty::DOOR_CHILD_LOCK_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::MIRROR_Z_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::MIRROR_Z_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::MIRROR_Y_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::MIRROR_Y_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::MIRROR_LOCK, {"change_mode", "access", "version"}},
+        {VehicleProperty::MIRROR_FOLD, {"change_mode", "access", "version"}},
+        {VehicleProperty::MIRROR_AUTO_FOLD_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::MIRROR_AUTO_TILT_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::SEAT_MEMORY_SELECT, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_MEMORY_SET, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_BELT_BUCKLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::SEAT_BELT_HEIGHT_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_BELT_HEIGHT_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_FORE_AFT_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_FORE_AFT_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_BACKREST_ANGLE_1_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_BACKREST_ANGLE_1_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_BACKREST_ANGLE_2_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_BACKREST_ANGLE_2_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_HEIGHT_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_HEIGHT_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_DEPTH_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_DEPTH_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_TILT_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_TILT_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_LUMBAR_FORE_AFT_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_LUMBAR_FORE_AFT_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_HEADREST_HEIGHT_POS, {"change_mode", "access", "version"}},
+        {VehicleProperty::SEAT_HEADREST_HEIGHT_POS_V2, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_HEADREST_HEIGHT_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_HEADREST_ANGLE_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_HEADREST_ANGLE_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_HEADREST_FORE_AFT_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_HEADREST_FORE_AFT_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_FOOTWELL_LIGHTS_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::SEAT_FOOTWELL_LIGHTS_SWITCH, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::SEAT_EASY_ACCESS_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::SEAT_AIRBAG_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::SEAT_AIRBAGS_DEPLOYED, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::SEAT_CUSHION_SIDE_SUPPORT_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_CUSHION_SIDE_SUPPORT_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_LUMBAR_VERTICAL_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_LUMBAR_VERTICAL_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_WALK_IN_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::SEAT_BELT_PRETENSIONER_DEPLOYED, {"change_mode", "access", "version"}},
+        {VehicleProperty::SEAT_OCCUPANCY, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::WINDOW_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::WINDOW_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::WINDOW_LOCK, {"change_mode", "access", "version"}},
+        {VehicleProperty::WINDSHIELD_WIPERS_PERIOD, {"change_mode", "unit", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::WINDSHIELD_WIPERS_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::WINDSHIELD_WIPERS_SWITCH, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::STEERING_WHEEL_DEPTH_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::STEERING_WHEEL_DEPTH_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::STEERING_WHEEL_HEIGHT_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::STEERING_WHEEL_HEIGHT_MOVE, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::STEERING_WHEEL_THEFT_LOCK_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::STEERING_WHEEL_LOCKED, {"change_mode", "access", "version"}},
+        {VehicleProperty::STEERING_WHEEL_EASY_ACCESS_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::GLOVE_BOX_DOOR_POS, {"change_mode", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::GLOVE_BOX_LOCKED, {"change_mode", "access", "version"}},
+        {VehicleProperty::VEHICLE_MAP_SERVICE, {"change_mode", "access", "version"}},
+        {VehicleProperty::LOCATION_CHARACTERIZATION, {"change_mode", "access", "version"}},
+        {VehicleProperty::ULTRASONICS_SENSOR_POSITION, {"change_mode", "access", "version"}},
+        {VehicleProperty::ULTRASONICS_SENSOR_ORIENTATION, {"change_mode", "access", "version"}},
+        {VehicleProperty::ULTRASONICS_SENSOR_FIELD_OF_VIEW, {"change_mode", "access", "version"}},
+        {VehicleProperty::ULTRASONICS_SENSOR_DETECTION_RANGE, {"change_mode", "access", "version"}},
+        {VehicleProperty::ULTRASONICS_SENSOR_SUPPORTED_RANGES, {"change_mode", "access", "version"}},
+        {VehicleProperty::ULTRASONICS_SENSOR_MEASURED_DISTANCE, {"change_mode", "access", "version"}},
+        {VehicleProperty::OBD2_LIVE_FRAME, {"change_mode", "access", "version"}},
+        {VehicleProperty::OBD2_FREEZE_FRAME, {"change_mode", "access", "version"}},
+        {VehicleProperty::OBD2_FREEZE_FRAME_INFO, {"change_mode", "access", "version"}},
+        {VehicleProperty::OBD2_FREEZE_FRAME_CLEAR, {"change_mode", "access", "version"}},
+        {VehicleProperty::HEADLIGHTS_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::HIGH_BEAM_LIGHTS_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::FOG_LIGHTS_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::HAZARD_LIGHTS_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::HEADLIGHTS_SWITCH, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::HIGH_BEAM_LIGHTS_SWITCH, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::FOG_LIGHTS_SWITCH, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::HAZARD_LIGHTS_SWITCH, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::CABIN_LIGHTS_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::CABIN_LIGHTS_SWITCH, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::READING_LIGHTS_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::READING_LIGHTS_SWITCH, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::STEERING_WHEEL_LIGHTS_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::STEERING_WHEEL_LIGHTS_SWITCH, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::SUPPORT_CUSTOMIZE_VENDOR_PERMISSION, {"change_mode", "access", "version"}},
+        {VehicleProperty::DISABLED_OPTIONAL_FEATURES, {"change_mode", "access", "version"}},
+        {VehicleProperty::INITIAL_USER_INFO, {"change_mode", "access", "version"}},
+        {VehicleProperty::SWITCH_USER, {"change_mode", "access", "version"}},
+        {VehicleProperty::CREATE_USER, {"change_mode", "access", "version"}},
+        {VehicleProperty::REMOVE_USER, {"change_mode", "access", "version"}},
+        {VehicleProperty::USER_IDENTIFICATION_ASSOCIATION, {"change_mode", "access", "version"}},
+        {VehicleProperty::EVS_SERVICE_REQUEST, {"change_mode", "access", "version"}},
+        {VehicleProperty::POWER_POLICY_REQ, {"change_mode", "access", "version"}},
+        {VehicleProperty::POWER_POLICY_GROUP_REQ, {"change_mode", "access", "version"}},
+        {VehicleProperty::CURRENT_POWER_POLICY, {"change_mode", "access", "version"}},
+        {VehicleProperty::WATCHDOG_ALIVE, {"change_mode", "access", "version"}},
+        {VehicleProperty::WATCHDOG_TERMINATED_PROCESS, {"change_mode", "access", "version"}},
+        {VehicleProperty::VHAL_HEARTBEAT, {"change_mode", "access", "version"}},
+        {VehicleProperty::CLUSTER_SWITCH_UI, {"change_mode", "access", "version"}},
+        {VehicleProperty::CLUSTER_DISPLAY_STATE, {"change_mode", "access", "version"}},
+        {VehicleProperty::CLUSTER_REPORT_STATE, {"change_mode", "access", "version"}},
+        {VehicleProperty::CLUSTER_REQUEST_DISPLAY, {"change_mode", "access", "version"}},
+        {VehicleProperty::CLUSTER_NAVIGATION_STATE, {"change_mode", "access", "version"}},
+        {VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_TYPE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_STATUS, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::FRONT_FOG_LIGHTS_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::FRONT_FOG_LIGHTS_SWITCH, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::REAR_FOG_LIGHTS_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::REAR_FOG_LIGHTS_SWITCH, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::EV_CHARGE_CURRENT_DRAW_LIMIT, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::EV_CHARGE_PERCENT_LIMIT, {"change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version"}},
+        {VehicleProperty::EV_CHARGE_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::EV_CHARGE_SWITCH, {"change_mode", "access", "version"}},
+        {VehicleProperty::EV_CHARGE_TIME_REMAINING, {"change_mode", "access", "version", "unit"}},
+        {VehicleProperty::EV_REGENERATIVE_BRAKING_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::TRAILER_PRESENT, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::VEHICLE_CURB_WEIGHT, {"change_mode", "access", "version"}},
+        {VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::SUPPORTED_PROPERTY_IDS, {"change_mode", "access", "version"}},
+        {VehicleProperty::SHUTDOWN_REQUEST, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::VEHICLE_IN_USE, {"change_mode", "access", "version"}},
+        {VehicleProperty::CLUSTER_HEARTBEAT, {"change_mode", "access", "version"}},
+        {VehicleProperty::VEHICLE_DRIVING_AUTOMATION_CURRENT_LEVEL, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::VEHICLE_DRIVING_AUTOMATION_TARGET_LEVEL, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::CAMERA_SERVICE_CURRENT_STATE, {"change_mode", "access", "version", "data_enum"}},
+        {VehicleProperty::PER_DISPLAY_MAX_BRIGHTNESS, {"change_mode", "access", "version"}},
+        {VehicleProperty::AUTOMATIC_EMERGENCY_BRAKING_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::AUTOMATIC_EMERGENCY_BRAKING_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::FORWARD_COLLISION_WARNING_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::FORWARD_COLLISION_WARNING_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::BLIND_SPOT_WARNING_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::BLIND_SPOT_WARNING_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::LANE_DEPARTURE_WARNING_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::LANE_DEPARTURE_WARNING_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::LANE_KEEP_ASSIST_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::LANE_KEEP_ASSIST_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::LANE_CENTERING_ASSIST_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::LANE_CENTERING_ASSIST_COMMAND, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::LANE_CENTERING_ASSIST_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::EMERGENCY_LANE_KEEP_ASSIST_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::EMERGENCY_LANE_KEEP_ASSIST_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::CRUISE_CONTROL_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::CRUISE_CONTROL_TYPE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::CRUISE_CONTROL_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::CRUISE_CONTROL_COMMAND, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::CRUISE_CONTROL_TARGET_SPEED, {"change_mode", "unit", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::ADAPTIVE_CRUISE_CONTROL_TARGET_TIME_GAP, {"change_mode", "unit", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version"}},
+        {VehicleProperty::ADAPTIVE_CRUISE_CONTROL_LEAD_VEHICLE_MEASURED_DISTANCE, {"change_mode", "unit", "require_min_max_supported_value", "access", "version"}},
+        {VehicleProperty::HANDS_ON_DETECTION_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::HANDS_ON_DETECTION_DRIVER_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::HANDS_ON_DETECTION_WARNING, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::DRIVER_DROWSINESS_ATTENTION_SYSTEM_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::DRIVER_DROWSINESS_ATTENTION_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::DRIVER_DROWSINESS_ATTENTION_WARNING_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::DRIVER_DROWSINESS_ATTENTION_WARNING, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::DRIVER_DISTRACTION_SYSTEM_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::DRIVER_DISTRACTION_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::DRIVER_DISTRACTION_WARNING_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::DRIVER_DISTRACTION_WARNING, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::LOW_SPEED_COLLISION_WARNING_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::LOW_SPEED_COLLISION_WARNING_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::CROSS_TRAFFIC_MONITORING_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::CROSS_TRAFFIC_MONITORING_WARNING_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+        {VehicleProperty::LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_ENABLED, {"change_mode", "access", "version"}},
+        {VehicleProperty::LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_STATE, {"change_mode", "access", "require_supported_values_list", "version", "data_enum"}},
+};
+
+}  // namespace vehicle
+}  // namespace automotive
+}  // namespace hardware
+}  // namespace android
+}  // aidl
diff --git a/automotive/vehicle/aidl/generated_lib/4/java/AnnotationsForVehicleProperty.java b/automotive/vehicle/aidl/generated_lib/4/java/AnnotationsForVehicleProperty.java
new file mode 100644
index 0000000..9ef5f04
--- /dev/null
+++ b/automotive/vehicle/aidl/generated_lib/4/java/AnnotationsForVehicleProperty.java
@@ -0,0 +1,315 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * DO NOT EDIT MANUALLY!!!
+ *
+ * Generated by tools/generate_annotation_enums.py.
+ */
+
+// clang-format off
+
+package android.hardware.automotive.vehicle;
+
+import java.util.Set;
+import java.util.Map;
+
+public final class AnnotationsForVehicleProperty {
+
+    public static final Map<Integer, Set<String>> values = Map.ofEntries(
+        Map.entry(VehicleProperty.INFO_VIN, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.INFO_MAKE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.INFO_MODEL, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.INFO_MODEL_YEAR, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.INFO_FUEL_CAPACITY, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.INFO_FUEL_TYPE, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.INFO_EV_BATTERY_CAPACITY, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.INFO_EV_CONNECTOR_TYPE, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.INFO_FUEL_DOOR_LOCATION, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.INFO_EV_PORT_LOCATION, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.INFO_DRIVER_SEAT, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.INFO_EXTERIOR_DIMENSIONS, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.INFO_MULTI_EV_PORT_LOCATIONS, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.INFO_MODEL_TRIM, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.INFO_VEHICLE_SIZE_CLASS, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.PERF_ODOMETER, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.PERF_VEHICLE_SPEED, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.PERF_VEHICLE_SPEED_DISPLAY, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.PERF_STEERING_ANGLE, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.PERF_REAR_STEERING_ANGLE, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.INSTANTANEOUS_FUEL_ECONOMY, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.INSTANTANEOUS_EV_EFFICIENCY, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.ENGINE_COOLANT_TEMP, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.ENGINE_OIL_LEVEL, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.ENGINE_OIL_TEMP, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.ENGINE_RPM, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.WHEEL_TICK, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.FUEL_LEVEL, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.FUEL_DOOR_OPEN, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.EV_BATTERY_LEVEL, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.EV_CURRENT_BATTERY_CAPACITY, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.EV_CHARGE_PORT_OPEN, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.EV_CHARGE_PORT_CONNECTED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.EV_BATTERY_INSTANTANEOUS_CHARGE_RATE, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.RANGE_REMAINING, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.EV_BATTERY_AVERAGE_TEMPERATURE, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.TIRE_PRESSURE, Set.of("change_mode", "unit", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.CRITICALLY_LOW_TIRE_PRESSURE, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.ACCELERATOR_PEDAL_COMPRESSION_PERCENTAGE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.BRAKE_PEDAL_COMPRESSION_PERCENTAGE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.BRAKE_PAD_WEAR_PERCENTAGE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.BRAKE_FLUID_LEVEL_LOW, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.VEHICLE_PASSIVE_SUSPENSION_HEIGHT, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.ENGINE_IDLE_AUTO_STOP_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.IMPACT_DETECTED, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum", "data_enum_bit_flags")),
+        Map.entry(VehicleProperty.VEHICLE_HORN_ENGAGED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.GEAR_SELECTION, Set.of("change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.CURRENT_GEAR, Set.of("change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.PARKING_BRAKE_ON, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.PARKING_BRAKE_AUTO_APPLY, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.EV_BRAKE_REGENERATION_LEVEL, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.FUEL_LEVEL_LOW, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.NIGHT_MODE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.TURN_SIGNAL_STATE, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.IGNITION_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.ABS_ACTIVE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.TRACTION_CONTROL_ACTIVE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.EV_STOPPING_MODE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.ELECTRONIC_STABILITY_CONTROL_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.ELECTRONIC_STABILITY_CONTROL_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.TURN_SIGNAL_LIGHT_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum", "data_enum_bit_flags")),
+        Map.entry(VehicleProperty.TURN_SIGNAL_SWITCH, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.HVAC_FAN_SPEED, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_FAN_DIRECTION, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.HVAC_TEMPERATURE_CURRENT, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.HVAC_TEMPERATURE_SET, Set.of("change_mode", "unit", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_DEFROSTER, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_AC_ON, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_MAX_AC_ON, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_MAX_DEFROST_ON, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_RECIRC_ON, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_DUAL_ON, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_AUTO_ON, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_SEAT_TEMPERATURE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_SIDE_MIRROR_HEAT, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_STEERING_WHEEL_HEAT, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_TEMPERATURE_DISPLAY_UNITS, Set.of("change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.HVAC_ACTUAL_FAN_SPEED_RPM, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_POWER_ON, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_FAN_DIRECTION_AVAILABLE, Set.of("change_mode", "access", "version", "data_enum", "data_enum_bit_flags")),
+        Map.entry(VehicleProperty.HVAC_AUTO_RECIRC_ON, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_SEAT_VENTILATION, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_ELECTRIC_DEFROSTER_ON, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HVAC_TEMPERATURE_VALUE_SUGGESTION, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.DISTANCE_DISPLAY_UNITS, Set.of("change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.FUEL_VOLUME_DISPLAY_UNITS, Set.of("change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.TIRE_PRESSURE_DISPLAY_UNITS, Set.of("change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.EV_BATTERY_DISPLAY_UNITS, Set.of("change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.VEHICLE_SPEED_DISPLAY_UNITS, Set.of("change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.EXTERNAL_CAR_TIME, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.ANDROID_EPOCH_TIME, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.STORAGE_ENCRYPTION_BINDING_SEED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.ENV_OUTSIDE_TEMPERATURE, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.AP_POWER_STATE_REQ, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.AP_POWER_STATE_REPORT, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.AP_POWER_BOOTUP_REASON, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.DISPLAY_BRIGHTNESS, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.PER_DISPLAY_BRIGHTNESS, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.VALET_MODE_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HEAD_UP_DISPLAY_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HW_KEY_INPUT, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HW_KEY_INPUT_V2, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HW_MOTION_INPUT, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HW_ROTARY_INPUT, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.HW_CUSTOM_INPUT, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.DOOR_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.DOOR_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.DOOR_LOCK, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.DOOR_CHILD_LOCK_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.MIRROR_Z_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.MIRROR_Z_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.MIRROR_Y_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.MIRROR_Y_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.MIRROR_LOCK, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.MIRROR_FOLD, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.MIRROR_AUTO_FOLD_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.MIRROR_AUTO_TILT_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_MEMORY_SELECT, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_MEMORY_SET, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_BELT_BUCKLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_BELT_HEIGHT_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_BELT_HEIGHT_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_FORE_AFT_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_FORE_AFT_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_BACKREST_ANGLE_1_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_BACKREST_ANGLE_1_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_BACKREST_ANGLE_2_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_BACKREST_ANGLE_2_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_HEIGHT_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_HEIGHT_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_DEPTH_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_DEPTH_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_TILT_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_TILT_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_LUMBAR_FORE_AFT_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_LUMBAR_FORE_AFT_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_LUMBAR_SIDE_SUPPORT_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_LUMBAR_SIDE_SUPPORT_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_HEADREST_HEIGHT_POS, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_HEADREST_HEIGHT_POS_V2, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_HEADREST_HEIGHT_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_HEADREST_ANGLE_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_HEADREST_ANGLE_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_HEADREST_FORE_AFT_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_HEADREST_FORE_AFT_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_FOOTWELL_LIGHTS_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.SEAT_FOOTWELL_LIGHTS_SWITCH, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.SEAT_EASY_ACCESS_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_AIRBAG_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_AIRBAGS_DEPLOYED, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.SEAT_CUSHION_SIDE_SUPPORT_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_CUSHION_SIDE_SUPPORT_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_LUMBAR_VERTICAL_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_LUMBAR_VERTICAL_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_WALK_IN_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_BELT_PRETENSIONER_DEPLOYED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.SEAT_OCCUPANCY, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.WINDOW_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.WINDOW_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.WINDOW_LOCK, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.WINDSHIELD_WIPERS_PERIOD, Set.of("change_mode", "unit", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.WINDSHIELD_WIPERS_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.WINDSHIELD_WIPERS_SWITCH, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.STEERING_WHEEL_DEPTH_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.STEERING_WHEEL_DEPTH_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.STEERING_WHEEL_HEIGHT_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.STEERING_WHEEL_HEIGHT_MOVE, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.STEERING_WHEEL_THEFT_LOCK_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.STEERING_WHEEL_LOCKED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.STEERING_WHEEL_EASY_ACCESS_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.GLOVE_BOX_DOOR_POS, Set.of("change_mode", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.GLOVE_BOX_LOCKED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.VEHICLE_MAP_SERVICE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.LOCATION_CHARACTERIZATION, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.ULTRASONICS_SENSOR_POSITION, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.ULTRASONICS_SENSOR_ORIENTATION, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.ULTRASONICS_SENSOR_FIELD_OF_VIEW, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.ULTRASONICS_SENSOR_DETECTION_RANGE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.ULTRASONICS_SENSOR_SUPPORTED_RANGES, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.ULTRASONICS_SENSOR_MEASURED_DISTANCE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.OBD2_LIVE_FRAME, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.OBD2_FREEZE_FRAME, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.OBD2_FREEZE_FRAME_INFO, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.OBD2_FREEZE_FRAME_CLEAR, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HEADLIGHTS_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.HIGH_BEAM_LIGHTS_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.FOG_LIGHTS_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.HAZARD_LIGHTS_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.HEADLIGHTS_SWITCH, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.HIGH_BEAM_LIGHTS_SWITCH, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.FOG_LIGHTS_SWITCH, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.HAZARD_LIGHTS_SWITCH, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.CABIN_LIGHTS_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.CABIN_LIGHTS_SWITCH, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.READING_LIGHTS_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.READING_LIGHTS_SWITCH, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.STEERING_WHEEL_LIGHTS_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.STEERING_WHEEL_LIGHTS_SWITCH, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.SUPPORT_CUSTOMIZE_VENDOR_PERMISSION, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.DISABLED_OPTIONAL_FEATURES, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.INITIAL_USER_INFO, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.SWITCH_USER, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.CREATE_USER, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.REMOVE_USER, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.USER_IDENTIFICATION_ASSOCIATION, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.EVS_SERVICE_REQUEST, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.POWER_POLICY_REQ, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.POWER_POLICY_GROUP_REQ, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.CURRENT_POWER_POLICY, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.WATCHDOG_ALIVE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.WATCHDOG_TERMINATED_PROCESS, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.VHAL_HEARTBEAT, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.CLUSTER_SWITCH_UI, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.CLUSTER_DISPLAY_STATE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.CLUSTER_REPORT_STATE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.CLUSTER_REQUEST_DISPLAY, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.CLUSTER_NAVIGATION_STATE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.ELECTRONIC_TOLL_COLLECTION_CARD_TYPE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.ELECTRONIC_TOLL_COLLECTION_CARD_STATUS, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.FRONT_FOG_LIGHTS_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.FRONT_FOG_LIGHTS_SWITCH, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.REAR_FOG_LIGHTS_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.REAR_FOG_LIGHTS_SWITCH, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.EV_CHARGE_CURRENT_DRAW_LIMIT, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.EV_CHARGE_PERCENT_LIMIT, Set.of("change_mode", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version")),
+        Map.entry(VehicleProperty.EV_CHARGE_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.EV_CHARGE_SWITCH, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.EV_CHARGE_TIME_REMAINING, Set.of("change_mode", "access", "version", "unit")),
+        Map.entry(VehicleProperty.EV_REGENERATIVE_BRAKING_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.TRAILER_PRESENT, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.VEHICLE_CURB_WEIGHT, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.SUPPORTED_PROPERTY_IDS, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.SHUTDOWN_REQUEST, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.VEHICLE_IN_USE, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.CLUSTER_HEARTBEAT, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.VEHICLE_DRIVING_AUTOMATION_CURRENT_LEVEL, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.VEHICLE_DRIVING_AUTOMATION_TARGET_LEVEL, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.CAMERA_SERVICE_CURRENT_STATE, Set.of("change_mode", "access", "version", "data_enum")),
+        Map.entry(VehicleProperty.PER_DISPLAY_MAX_BRIGHTNESS, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.AUTOMATIC_EMERGENCY_BRAKING_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.AUTOMATIC_EMERGENCY_BRAKING_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.FORWARD_COLLISION_WARNING_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.FORWARD_COLLISION_WARNING_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.BLIND_SPOT_WARNING_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.BLIND_SPOT_WARNING_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.LANE_DEPARTURE_WARNING_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.LANE_DEPARTURE_WARNING_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.LANE_KEEP_ASSIST_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.LANE_KEEP_ASSIST_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.LANE_CENTERING_ASSIST_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.LANE_CENTERING_ASSIST_COMMAND, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.LANE_CENTERING_ASSIST_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.EMERGENCY_LANE_KEEP_ASSIST_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.EMERGENCY_LANE_KEEP_ASSIST_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.CRUISE_CONTROL_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.CRUISE_CONTROL_TYPE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.CRUISE_CONTROL_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.CRUISE_CONTROL_COMMAND, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.CRUISE_CONTROL_TARGET_SPEED, Set.of("change_mode", "unit", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.ADAPTIVE_CRUISE_CONTROL_TARGET_TIME_GAP, Set.of("change_mode", "unit", "legacy_supported_values_in_config", "access", "require_supported_values_list", "version")),
+        Map.entry(VehicleProperty.ADAPTIVE_CRUISE_CONTROL_LEAD_VEHICLE_MEASURED_DISTANCE, Set.of("change_mode", "unit", "require_min_max_supported_value", "access", "version")),
+        Map.entry(VehicleProperty.HANDS_ON_DETECTION_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.HANDS_ON_DETECTION_DRIVER_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.HANDS_ON_DETECTION_WARNING, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.DRIVER_DROWSINESS_ATTENTION_SYSTEM_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.DRIVER_DROWSINESS_ATTENTION_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.DRIVER_DROWSINESS_ATTENTION_WARNING_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.DRIVER_DROWSINESS_ATTENTION_WARNING, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.DRIVER_DISTRACTION_SYSTEM_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.DRIVER_DISTRACTION_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.DRIVER_DISTRACTION_WARNING_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.DRIVER_DISTRACTION_WARNING, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.LOW_SPEED_COLLISION_WARNING_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.LOW_SPEED_COLLISION_WARNING_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.CROSS_TRAFFIC_MONITORING_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.CROSS_TRAFFIC_MONITORING_WARNING_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum")),
+        Map.entry(VehicleProperty.LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_ENABLED, Set.of("change_mode", "access", "version")),
+        Map.entry(VehicleProperty.LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_STATE, Set.of("change_mode", "access", "require_supported_values_list", "version", "data_enum"))
+    );
+
+}
diff --git a/automotive/vehicle/tools/generate_annotation_enums.py b/automotive/vehicle/tools/generate_annotation_enums.py
index f4ab00d..4ed19d3 100755
--- a/automotive/vehicle/tools/generate_annotation_enums.py
+++ b/automotive/vehicle/tools/generate_annotation_enums.py
@@ -45,6 +45,8 @@
 ENUM_JAVA_FILE_PATH = GENERATED_LIB + '/java/EnumForVehicleProperty.java'
 UNITS_JAVA_FILE_PATH = GENERATED_LIB + '/java/UnitsForVehicleProperty.java'
 VERSION_CPP_FILE_PATH = GENERATED_LIB + '/cpp/VersionForVehicleProperty.h'
+ANNOTATIONS_CPP_FILE_PATH = GENERATED_LIB + '/cpp/AnnotationsForVehicleProperty.h'
+ANNOTATIONS_JAVA_FILE_PATH = GENERATED_LIB + '/java/AnnotationsForVehicleProperty.java'
 SCRIPT_PATH = 'hardware/interfaces/automotive/vehicle/tools/generate_annotation_enums.py'
 
 TAB = '    '
@@ -164,6 +166,24 @@
 std::unordered_map<VehicleProperty, int32_t> VersionForVehicleProperty = {
 """
 
+ANNOTATIONS_CPP_HEADER = """#pragma once
+
+#include <aidl/android/hardware/automotive/vehicle/VehicleProperty.h>
+
+#include <string>
+#include <unordered_map>
+#include <unordered_set>
+
+namespace aidl {
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+
+std::unordered_map<VehicleProperty, std::unordered_set<std::string>>
+        AnnotationsForVehicleProperty = {
+"""
+
 CHANGE_MODE_JAVA_HEADER = """package android.hardware.automotive.vehicle;
 
 import java.util.Map;
@@ -207,6 +227,16 @@
     public static final Map<Integer, Integer> values = Map.ofEntries(
 """
 
+ANNOTATIONS_JAVA_HEADER = """package android.hardware.automotive.vehicle;
+
+import java.util.Set;
+import java.util.Map;
+
+public final class AnnotationsForVehicleProperty {
+
+    public static final Map<Integer, Set<String>> values = Map.ofEntries(
+"""
+
 
 class PropertyConfig:
     """Represents one VHAL property definition in VehicleProperty.aidl."""
@@ -220,7 +250,8 @@
         self.enum_types = []
         self.unit_type = None
         self.version = None
-        self.annotations = []
+        # Use a set to avoid duplicate annotation.
+        self.annotations = set()
 
     def __repr__(self):
         return self.__str__()
@@ -301,7 +332,7 @@
             annotation = match_annotation.group(1)
             if annotation not in SUPPORTED_ANNOTATIONS:
                 raise Exception('Annotation: @' + annotation + " is not supported, typo?")
-            config.annotations.append(annotation)
+            config.annotations.add(annotation)
             match = RE_CHANGE_MODE.match(line)
             if match:
                 config.change_mode = match.group(1).replace('VehiclePropertyChangeMode.', '')
@@ -358,38 +389,45 @@
         for config in self.configs:
             if field == 'change_mode':
                 if cpp:
-                    annotation = "VehiclePropertyChangeMode::" + config.change_mode
+                    value = "VehiclePropertyChangeMode::" + config.change_mode
                 else:
-                    annotation = "VehiclePropertyChangeMode." + config.change_mode
+                    value = "VehiclePropertyChangeMode." + config.change_mode
             elif field == 'access_mode':
                 if cpp:
-                    annotation = "VehiclePropertyAccess::" + config.access_modes[0]
+                    value = "VehiclePropertyAccess::" + config.access_modes[0]
                 else:
-                    annotation = "VehiclePropertyAccess." + config.access_modes[0]
+                    value = "VehiclePropertyAccess." + config.access_modes[0]
             elif field == 'enum_types':
                 if len(config.enum_types) < 1:
-                    continue;
+                    continue
                 if not cpp:
-                    annotation = "List.of(" + ', '.join([class_name + ".class" for class_name in config.enum_types]) + ")"
+                    value = "List.of(" + ', '.join([class_name + ".class" for class_name in config.enum_types]) + ")"
             elif field == 'unit_type':
                 if not config.unit_type:
                     continue
                 if not cpp:
-                    annotation = config.unit_type
-
+                    value = config.unit_type
             elif field == 'version':
                 if cpp:
-                    annotation = config.version
+                    value = config.version
+            elif field == 'annotations':
+                if len(config.annotations) < 1:
+                    continue
+                joined_annotation_strings = ', '.join(['"' + annotation + '"' for annotation in config.annotations])
+                if cpp:
+                    value = "{" + joined_annotation_strings + "}"
+                else:
+                    value = "Set.of(" + joined_annotation_strings + ")"
             else:
                 raise Exception('Unknown field: ' + field)
             if counter != 0:
                 content += '\n'
             if cpp:
                 content += (TAB + TAB + '{VehicleProperty::' + config.name + ', ' +
-                            annotation + '},')
+                            value + '},')
             else:
                 content += (TAB + TAB + 'Map.entry(VehicleProperty.' + config.name + ', ' +
-                            annotation + '),')
+                            value + '),')
             counter += 1
 
         # Remove the additional ',' at the end for the Java file.
@@ -572,6 +610,15 @@
     version.setCppFooter(CPP_FOOTER)
     generated_files.append(version)
 
+    annotations = GeneratedFile('annotations')
+    annotations.setCppFilePath(os.path.join(android_top, ANNOTATIONS_CPP_FILE_PATH))
+    annotations.setJavaFilePath(os.path.join(android_top, ANNOTATIONS_JAVA_FILE_PATH))
+    annotations.setCppHeader(ANNOTATIONS_CPP_HEADER)
+    annotations.setCppFooter(CPP_FOOTER)
+    annotations.setJavaHeader(ANNOTATIONS_JAVA_HEADER)
+    annotations.setJavaFooter(JAVA_FOOTER)
+    generated_files.append(annotations)
+
     temp_files = []
 
     try: