ASDFで元のシステムのソースは変更せずに壊れたソースコードを修正済のものに差し替えたい
Aというsystemがあったとして、 このsystem中のfoo.lispが壊れていて、(load-system :a)とするとビルドができないとします。
この場合、A systemのfoo.lispを直接書き換えてしまえば修正は可能ですが、 Quicklisp等のパッケージマネージャーを利用していて、パッケージマネージャーから供給されるソースは一切変更したくなくないもの、とします。
このような場合、ASDFで処理されるソースコンポーネントを差し替えるにはどのような方法がベストでしょうか。
ちなみに、ASDFの中身を眺めてみましたが、うまい場所のフックが見付からず、asdf:performに対象のソースファイルのコンポーネントが来たら代替のものに差し替える(代替のコンポーネントは別のsystemとして定義しておく)方法位しか思い付きませんでした。
(defmethod asdf:perform :around (op (compo (Eql 壊れたソースコンポーネント)))
(asdf:perform operation 修正したソースコンポーネント))
なにか正式な作法があれば是非知りたいです。