code: def test_duplicate_adds(self):
      Item, Keyword = (self.classes.Item, self.classes.Keyword)
  
      session = Session(testing.db, autoflush=False)
  
      k1 = Keyword(name="k1")
      i1 = Item(description="i1", keywords=[k1])
      session.add(i1)
      session.commit()
  
      k1.items.append(i1)
      eq_(i1.keywords, [k1, k1])
  
      session.expire(i1, ["keywords"])
      k1.items.append(i1)
      eq_(i1.keywords, [k1, k1])
  
      session.expire(i1, ["keywords"])
      k1.items.append(i1)
      eq_(i1.keywords, [k1, k1])
  
      eq_(k1.items, [i1, i1, i1, i1])
      session.commit()
      eq_(k1.items, [i1])
  
imports: from sqlalchemy import testing
  from sqlalchemy import text
  from sqlalchemy.orm import attributes
  from sqlalchemy.orm import backref
  from sqlalchemy.orm import relationship
  from sqlalchemy.orm import Session
  from sqlalchemy.testing import eq_
  from sqlalchemy.testing import is_
  from sqlalchemy.testing.fixtures import fixture_session
  from test.orm import _fixtures
label_desc: Use image node_id 5 for calling the M2MCollectionMoveTest obj's underlying member method code with example usage: obj.test_duplicate_adds() without return types