@pytest.mark.with_all_evm_code_typesdeftest_address_collision(state_test:StateTestFiller,pre:Alloc,):"""Tests address collision."""env=Environment()slot_create_address_2=slot_last_slot*2+slot_create_addressslot_create_address_3=slot_last_slot*3+slot_create_addresssender=pre.fund_eoa()initcode_hash=smallest_initcode_subcontainer.hashcontract_address=pre.deploy_contract(code=Op.SSTORE(slot_create_address,Op.TXCREATE(tx_initcode_hash=initcode_hash))+Op.SSTORE(slot_create_address_2,Op.TXCREATE(tx_initcode_hash=initcode_hash))+Op.SSTORE(slot_create_address_3,Op.TXCREATE(tx_initcode_hash=initcode_hash,salt=1))+Op.SSTORE(slot_code_worked,value_code_worked)+Op.STOP,)salt_zero_address=compute_eofcreate_address(contract_address,0)salt_one_address=compute_eofcreate_address(contract_address,1)# Hard-code address for collision, no other way to do this.# We should mark tests that do this, and fail on unmarked tests.pre[salt_one_address]=Account(balance=1,nonce=1)post={contract_address:Account(storage={slot_create_address:salt_zero_address,slot_create_address_2:TXCREATE_FAILURE,# had an in-transaction collisionslot_create_address_3:TXCREATE_FAILURE,# had a pre-existing collisionslot_code_worked:value_code_worked,})}# Multiple create fails is expensive, use an absurd amount of gastx=Transaction(to=contract_address,gas_limit=300_000_000_000,sender=sender,initcodes=[smallest_initcode_subcontainer],)state_test(env=env,pre=pre,post=post,tx=tx)