//// [unionTypeWithRecursiveSubtypeReduction2.ts]
class Module {
    public members: Class[];
}

class Namespace {
    public members: (Class | Property)[];
}

class Class {
    public parent: Namespace;
}

class Property {
    public parent: Module | Class;
}

var c: Class;
var p: Property;
c = p;
p = c;

//// [unionTypeWithRecursiveSubtypeReduction2.js]
var Module = (function () {
    function Module() {
    }
    return Module;
})();
var Namespace = (function () {
    function Namespace() {
    }
    return Namespace;
})();
var Class = (function () {
    function Class() {
    }
    return Class;
})();
var Property = (function () {
    function Property() {
    }
    return Property;
})();
var c;
var p;
c = p;
p = c;
