コード生成という型プロバイダの側面はすでにカバーされている。2つの課題が残っている。抽象型メンバや値クラスといった多くの言語機構について型消去をサポートしているが、その機構は拡張可能ではないためマクロ作者がカスタマイズすることはできない。マクロによって展開された定義群のスコープは展開されたコードに制限されるが、これらの定義群はスコープを構造的部分型にすることで脱出可能だ。マクロは以下のように展開する。型を調べてみると、面白いことが分かる。型を推論しようとしたときに、ローカルで宣言されたクラスへの参照全てを元のクラスの公開されたメンバを全て含む構造的部分型に置き換えたみたいだ。してできた型は生成された型の本質を表したものとなっており、それらメンバの静的型付けされたインターフェイスを提供する。リフレクションをつかった呼び出しを生成するので、性能に問題がある。構造的部分型を使った回避策を使わなくても簡単に外部から見えるクラスを生成できるようになった。アノテーションを使った方法は率直なものなので、ここではあまり解説しない。同様の消去型プロバイダを提供できるのではないかという仮説がある。具体的には、消去したくない型は普通に今までどおり宣言して、任意の上限境界に消去したいクラスは一意に定まる識別子を持ったシングルトン型によってパラメータ化された上限境界の型エイリアスとして提供すればいい。この方法を用いても全ての新しい型に対して型エイリアスのメタデータのための余計なバイトコードというオーバヘッドが発生するけども、このバイトコードは普通のクラスのバイトコードに比べると非常に小さいものとなる。両方の型プロバイダにあてはまる。宣言すると正しく動作しない。ConductLicenseSocialGitHubTwitter。