// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
interface Animal {
  attribute DOMString name;
};

interface Human : Animal {
  attribute Dog pet;
};

interface Dog : Animal {
  attribute Human owner;
};