Currently (with comments added to explain the issue): ```ts function validate<T>(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<T>) { let set = descriptor.set; descriptor.set = function (value: T) { let type = Reflect.getMetadata("design:type", target, propertyKey); // "target" should be "this" if (!(value instanceof type)) { throw new TypeError("Invalid type."); } set.call(target, value); // "target" should be "this" } } ``` We should use `this` instead of `target` in those two lines with comments. I will make a PR for it later.