/// //// type MixinCtor = new () => A & B & { constructor: MixinCtor }; //// function merge(a: { prototype: A }, b: { prototype: B }): MixinCtor { //// let merged = function() { } //// Object.assign(merged.prototype, a.prototype, b.prototype); //// return >merged; //// } //// //// class TreeNode { //// value: any; //// } //// //// abstract class LeftSideNode extends TreeNode { //// abstract right(): TreeNode; //// left(): TreeNode { //// return null; //// } //// } //// //// abstract class RightSideNode extends TreeNode { //// abstract left(): TreeNode; //// right(): TreeNode { //// return null; //// }; //// } //// //// var obj = new (merge(LeftSideNode, RightSideNode))(); //// obj./**/ verify.completions({ marker: "", exact: ["right", "left", "value", "constructor"] });