export class PartiallyConstructible {
  /** @internal */
  _marker() {}
}

export type DeepPartial<T> = T extends PartiallyConstructible
  ? { [P in keyof T]?: DeepPartial<T[P]> }
  : T;

export class Point {
  public x: number;
  public y: number;

  public constructor(x: number, y: number) {
    this.x = x;
    this.y = y;
  }
}
