code: def add_with_properties(self, model, name=None, update_dict=None, bulk=True, **kwargs):
          if self.category != Category.INSTANCE:
              raise APIError("Part should be of category INSTANCE")
          name = name or model.name
          action = 'new_instance_with_properties'
          properties_update_dict = dict()
          for prop_name_or_id, property_value in update_dict.items():
              if is_uuid(prop_name_or_id):
                  properties_update_dict[prop_name_or_id] = property_value
              else:
                  properties_update_dict[model.property(prop_name_or_id).id] = property_value
          if bulk:
              r = self._client._request('POST', self._client._build_url('parts'),
                                        data=dict(
                                            name=name,
                                            model=model.id,
                                            parent=self.id,
                                            properties=json.dumps(properties_update_dict),
                                            **kwargs
                                        ),
                                        params=dict(select_action=action))
              if r.status_code != requests.codes.created:
                  raise APIError('{}: {}'.format(str(r), r.content))
              return Part(r.json()['results'][0], client=self._client)
          else:
              new_part = self.add(model, name=name)
              new_part.update(update_dict=update_dict, bulk=bulk)
              return new_part