collect depend depend object supplier obj object client obj supplier obj model element client obj model element illeg argument except invalid argument model element supplier model element supplier obj model element client model element client obj list depend ret arrai list depend collect depend client depend client client depend iter model facad supplier depend supplier iter depend dep depend client depend contain dep ret add dep invalid object except invalid element except ret 