void main() { print(SuperClass.create(true).runtimeType); print(SuperClass.create(false).runtimeType); } class SuperClass { SuperClass(); factory SuperClass.create(bool createSubclass1) { if (createSubclass1) { return Subclass1(); } else { return Subclass2(); } } } class Subclass1 extends SuperClass {} class Subclass2 extends SuperClass {}