バイトコードを動的に取得するには?

byte[] bytecode = getBytecode(new Hoge());

のように Java プログラム中でバイトコードを動的に取得できないだろうか?Hoge クラス → Object クラス → Class クラス までは辿っていけるので,Class クラスの情報からなんとかバイトコードを取り出せないだろうか?
最悪,.class ファイルから FileInputStream で読み込んでもいいが,その場合でも .class ファイルがさらに他の(システムクラス以外の)クラスを利用している場合,その .class ファイルも検索していけるようにしたいのだが….
Java アプレットの場合, タグで指定されているクラスが他のクラス(少なくとも,同じソースファイルで定義された package-private のクラスは)を参照している場合でも問題なく動くようだが,どのように依存関係を解決しているのだろう?