interface BaseInterface {
    required: number;
    optional?: number;
}

declare class BaseClass {
    baseMethod();
    baseNumber: number;
}

interface Child extends BaseInterface {
    additional: number;
}

declare class Child extends BaseClass {
    classNumber: number;
    method();
}

// checks if properties actually were merged
var child : Child;
child.required;
child.optional;
child.additional;
child.baseNumber;
child.classNumber;
child.baseMethod();
child.method();

interface BaseInterface {
    required: number;
    optional?: number;
}

declare class BaseClass {
    baseMethod();
    x2: number;
}

interface Child extends BaseInterface {
    x3: number;
}

declare class Child extends BaseClass {
    x4: number;
    method();
}

// checks if properties actually were merged
var child : Child;
child.required;
child.optional;
child.x3;
child.x4;
child.baseMethod();
child.method();

--- 
+++ 
@@ -5,15 +5,15 @@
 
 declare class BaseClass {
     baseMethod();
-    x2: number;
+    baseNumber: number;
 }
 
 interface Child extends BaseInterface {
-    x3: number;
+    additional: number;
 }
 
 declare class Child extends BaseClass {
-    x4: number;
+    classNumber: number;
     method();
 }
 
@@ -21,7 +21,8 @@
 var child : Child;
 child.required;
 child.optional;
-child.x3;
-child.x4;
+child.additional;
+child.baseNumber;
+child.classNumber;
 child.baseMethod();
 child.method();
Improve naming of test members
