def __registry_value_object_from_dict(cls, registry_value_dict):
     registry_value_obj = win_registry_key_binding.RegistryValueType()
     for key, value in registry_value_dict.items():
         if key == 'name' and utils.test_value(value):
             registry_value_obj.set_Name(Base_Object_Attribute.object_from_dict(common_types_binding.StringObjectAttributeType(datatype='String'),value))
         elif key == 'data' and utils.test_value(value):
             registry_value_obj.set_Data(Base_Object_Attribute.object_from_dict(common_types_binding.StringObjectAttributeType(datatype='String'),value))
         elif key == 'datatype' and utils.test_value(value):
             registry_value_obj.set_Datatype(Base_Object_Attribute.object_from_dict(common_types_binding.StringObjectAttributeType(datatype='String'),value))
         elif key == 'byte_runs' : ByteRuns.object_from_dict(value)
     return registry_value_obj
    def object_from_dict(cls, registry_key_dict):
        """Create the Win Registry Key Object object representation from an input dictionary"""
        registry_key_obj = win_registry_key_binding.WindowsRegistryKeyObjectType()
        registry_key_obj.set_anyAttributes_({'xsi:type' : 'WinRegistryKeyObj:WindowsRegistryKeyObjectType'})
        registry_value = win_registry_key_binding.RegistryValueType()

        for key, value in registry_key_dict.items():
            if key == 'hive' and utils.test_value(value):
                registry_key_obj.set_Hive(Base_Object_Attribute.object_from_dict(common_types_binding.StringObjectAttributeType(datatype='String'), value))
            elif key == 'key' and utils.test_value(value):
                registry_key_obj.set_Key(Base_Object_Attribute.object_from_dict(common_types_binding.StringObjectAttributeType(datatype='String'), value))
            elif key == 'number_values' and utils.test_value(value):
                registry_key_obj.set_Number_Values(Base_Object_Attribute.object_from_dict(common_types_binding.UnsignedIntegerObjectAttributeType(datatype='UnsignedInteger'), value))
            elif key == 'values' :
                registry_values_obj = win_registry_key_binding.RegistryValuesType()
                for registry_value_dict in value:
                    registry_value_obj = cls.__registry_value_object_from_dict(registry_value_dict)
                    if registry_value_obj.hasContent_() : registry_values_obj.add_Value(registry_value_obj)
                if registry_values_obj.hasContent_() : registry_key_obj.set_Values(registry_values_obj)
            elif key == 'modified_time' and utils.test_value(value):
                registry_key_obj.set_Modified_Time(Base_Object_Attribute.object_from_dict(common_types_binding.DateTimeObjectAttributeType(datatype='DateTime'), value))
            elif key == 'creator_username' and utils.test_value(value):
                registry_key_obj.set_Creator_Username(Base_Object_Attribute.object_from_dict(common_types_binding.StringObjectAttributeType(datatype='String'), value))                
            elif key == 'handle_list':
                registry_key_obj.set_Handle_List(Win_Handle_List.object_from_dict(value))
            elif key == 'number_subkeys' and utils.test_value(value):
                registry_key_obj.set_Number_Subkeys(Base_Object_Attribute.object_from_dict(common_types_binding.UnsignedIntegerObjectAttributeType(datatype='UnsignedInteger'), value))                
            elif key == 'subkeys' :
                subkeys_obj = win_registry_key_binding.RegistrySubkeysType()
                for sub_registry_key_dict in value:
                    sub_registry_key_obj = cls.object_from_dict(sub_registry_key_dict)
                    if sub_registry_key_obj.hasContent_() : subkeys_obj.add_Subkey(sub_registry_key_obj)
                if subkeys_obj.hasContent_() : registry_key_obj.set_Subkeys(subkeys_obj)
            elif key == 'byte_runs' : 
                  registry_key_obj.set_Byte_Runs(ByteRuns.object_from_dict(value))
        return registry_key_obj