interface A : B {
      attribute DOMString a;
    };

    interface B : C {
      [Default] object toJSON();
      attribute long b;
    };

    interface C {
      attribute DOMString c;
    };

    interface mixin D {
      [Default] object toJSON();
      attribute float d;
    };

    interface mixin G {
      [Default] object toJSON();
      attribute octet g;
    };

    interface mixin H {
      [Default] object toJSON();
      attribute DOMString h;
    };

    interface mixin I {
      [Default] object toJSON();
      attribute boolean i;
    };

    A includes G;
    A includes H;
    B includes D;