Material slots are a real pain to get working, due to all the black magic they do to hide object vs. obdata storage of the material... Currently hitting an order problem - we need to always set 'link' (to object or obdata) property of the slot first, before we set its material... *super-sigh*