Much work on bug #7959.  Almost everything is done, except removing the table entry in IOPBase.