Note that I had to create the separate subclasses because we can't map different WebIDL interfaces to the same concrete type: it causes the PrototypeIDMap templates to completely fail to deal.