ここでは、eclipseのコンパイラを変更する際に、念頭に置くべき事柄を述べる。
eclipseでのJavaの開発支援は、org.eclipse.jdt.coreプラグインが行っており、Javaのコンパイラもこのプラグインの中に含まれる。 JDTのコンパイラはJikesで使用されているパーサージェネレータJikesPGで生成されている。文法定義は、plugins/org.eclipse.jdt.core/grammarディレクトリに収められており、J2SE1.4用の文法定義ファイルは、java_1_4.gである。 文法定義ファイルからJDTをビルドする方法は、文法定義ファイルからのコンパイル方法章を参照。
後述のjikesPGがLALR(1)の文法を扱うため、eclipseのコンパイラはLALR(1)の文法を扱う。
JDTのコンパイラのコードには、ほとんどコメントが付いていない(APIとして公開されている一部を除く)。また、publicなフィールドも多い(アクセッサが用意されていないことが多い)。したがって、例えば「インスタンスがどういう値に設定されていれば正常な状態か」など、多くの事柄をソースから推測するしかない。 「正しく動くはず」のコードを記述するのは困難なので、「多分これで動くのではないか」と言うコードを書いてテストすることになった。eclipseのコミュニティと密に連携しなければ、 安心してコードやテストコードを書いたり、eclipseのバージョンアップに対応するのは困難と思われる。
JDTのコードを見ると、軽快な動作を実現するための努力が多く見られる(中には無意味と思われる努力も)。javaの文法定義を見ても、パーサーの状態遷移表が大きくならないようになっている。JDTでは編集中に何度もパーサーを呼び出すので、高速なパーサーは必要不可欠である。
通常、コンパイラはAST(抽象構文木)を使用してコンパイル処理を実現する。 JDTもASTを利用するが、JDTでは、次のような4種類ものASTが存在する。コンパイルに必要なのは、org.eclipse.jdt.internal.compiler.astパッケージにあるASTである。
表 1. JDTのAST
ASTの種類 | 用途 |
---|---|
org.eclipse.jdt.core.IJavaElementを親とするクラス | PackageExplorerに表示する単位。クラス、フィールド、メソッド(、インポート文も?)。 |
org.eclipse.jdt.core.jdom | Java ドキュメント・オブジェクト・モデル (DOM) をサポートしており、Java コンパイル単位の構造を確認しながら移動することができる。粒度はorg.eclipse.jdt.core.IJavaElementとほぼ同じ。 |
org.eclipse.jdt.core.dom | コンパイル単位の構造をステートメント・レベルまで検査するために使用する抽象構文ツリー |
org.eclipse.jdt.internal.compiler.ast | コンパイルするための抽象構文ツリー。粒度はorg.eclipse.jdt.core.domとほぼ同じ。 |
JDTのソースを読むとき、大量のソースを縦横無尽に行き来する必要がある。ソースのブラウズにeclipse自身を使うと 非常に便利である。次のようなことが、単一のファイル単位ではなく、ワークスペースレベルでできる。
選択した識別子の定義個所にジャンプ
選択した識別子の参照個所を検索
選択したクラスまたはインターフェイスの階層構造を表示
選択した変数を変更している個所を検索
選択した変数を参照している個所を検索
eclipseを構成するプラグインをeclipseで参照するには、次のようにする。
eclipseのソースを展開する。展開先(pluginsディレクトリを含むディレクトリ)を${ECLIPSESRC}とする。
eclipseを起動し、 File->New->Projectで、Simple Projectを選択。Plug-in Project等を選ばない。
図1のダイアログで、Use defaultのチェックをはずし、${ECLIPSESRC}/plugins/<プラグイン名> をDirectoryに指定し、Project nameに<プラグイン名>を指定する。
取り込んだプラグインが依存する他のプラグインがないとエラーが出るので、適宜足りないプラグインを取り込む。JDTのソースを読むのに最低限必要なのは、次のプラグイン。
org.apache.ant org.apache.xerces org.eclipse.ant.core org.eclipse.ant.optional.junit org.eclipse.core.boot org.eclipse.core.resources org.eclipse.core.runtime org.eclipse.jdt org.eclipse.jdt.core |
作成したプロジェクトを、JavaパースペクティブやPDEパースペクティブで開く。
JDTのコンパイラを変更するには、まずJDTのビルド方法を知る必要がある。 ここでは、JDTのコンパイラを変更した際の、eclipseの再構築方法を述べる。
文法定義ファイルからのパーサーを生成しJDTをコンパイルする方法は、eclipseのサイトに示されている(ただし、一部記述されていない作業もある)。
文法定義ファイルを変更しJDTをビルドするまでの大まかな流れを、図1に示す。実際には、図1に示した作業以外にも、jikesPGのインストールなどが必要である。
以下に、Red Hat Linux 8.0(x86)上でのコンパイル手順を詳細に示す。
まず、パーサー生成に必要なjikesPGをインストールする。jikesのホームページから、jikesPGの1.3(jikespg-1.3.tar.gz)をダウンロードする。ダウンロードしたファイルへのパスが、/path/to/jikespg-1.3.tar.gzで、/opt/jikespgにインストールする場合、次のようにする。
# mkdir /opt # cd /opt # tar zxvf /path/to/jikespg-1.3.tar.gz # cd jikespg/src # make clean all # mkdir ../bin # cp jikespg ../bin # make clean |
以後の作業では、/opt/jikespg/binにパスが通してあるものとする。
jikesPGは、Java言語で記述されたパーサーを生成するパーサージェネレータである。jikesPG自身は、C言語で記述されており、非常に高速に動作する。
jikesPGは、主にjikes(IBMのjavaコンパイラ)を作るために使用されているようで、Java向けの汎用パーサージェネレータとしてはあまり認知されていないようだ。 その為か、jikesPGに関する情報は、非常に限られており、文法定義ファイルの記述方法のドキュメントすら見つけられなかった。 jikesPGに付属のexampleやjava_1_4.gの技術を見て、使用方法を推測した。 また、エラー処理などがいい加減で、長いパス名などをパラメータに渡すと、バッファオーバーランで誤動作する。今回は、gcc バージョン 3.2 20020903 (Red Hat Linux 8.0 3.2-7)でコンパイルしたものを使用した。jikesPGの移植性はかなり低いらしく、使用しているコンパイラや実行環境によっては、ユニークに割り当てられるべき整数が重複することがある。
WindowsでjikesPGをコンパイルするには、Free Borland C++ Compiler とGNU utilities for Win32をインストールし、jikespg/src/Makefileを修正し makeを実行する。Makefileの主な変更点は、オブジェクトファイルの拡張子を.objにするのと、リンクのコマンドを
$(CC) -ejikespg.exe .... |
ただし、出来上がったjikespgでパーサーを作成したところ、トークンにユニークに割り当てられるべき整数が重複していた。そのため、Parser.javaをコンパイル中にcaseラベルが重複している旨のエラーが出て、使い物にならなかった。bcc32でコンパイル時に、警告がいくつか出るのでそれを修正すれば使えるかもしれない。cygwin&gccでコンパイルすれば 問題ないかもしれないが、未確認。Linux for x86でも、gccのバージョンによってはbcc32と同じ現象が見られるようだ。
eclipseのホームページから、eclipse 2.1のソース(eclipse-sourceBuild-srcIncluded-2.1.zip)をダウンロードする。ダウンロードしたファイルへのパスが、/path/to/eclipse-sourceBuild-srcIncluded-2.1.zipで、/opt/eclipse-2.1(以下、/opt/eclipse-2.1を${eclipse}と表記)に展開する場合、次のようにする。
# eclipse=/opt/eclipse-2.1 # mkdir -p ${eclipse} # cd ${eclipse} # unzip /path/to/eclipse-sourceBuild-srcIncluded-2.1.zip |
後述するが、JDTのパーサーを変更してビルドするには、JDT自身のjarファイル(${eclipse}/plugins/org.eclipse.jdt.core/jdtcore.jar)が必要になる。 したがって、まずeclipse全体をビルドし、jdtcore.jarを作成する。 eclipseをビルドするには、ant(>=1.4)、JDK(>=1.4.1)が利用可能な状態で、次のようにする。
# cd ${eclipse} # build -os <osType> -ws <windowSystemType> |
<osType>や<windowSystemType>に指定する値は、表1を参照。
ここまでで、eclipseのコンパイラをJavaの文法定義ファイルからビルドする準備が整った。 以降、Javaの文法定義ファイルからJDTをビルドしなおす方法を述べる。まず、次のように、Javaの文法定義ファイルから、jikesPGを使用してパーサーを生成する。Javaの文法定義ファイルは、${eclipse}/plugins/org.eclipse.jdt.core/grammar/java_1_4.gである。
# cd ${eclipse}/plugins/org.eclipse.jdt.core/grammar # jikespg java_1_4.g … This grammar is LALR(1). … # ls JavaAction.java java_1_4.l javadcl.java javahdr.java javasym.java java_1_4.g java_1_5.g javadef.java javaprs.java |
すると、表2に示すファイル群が生成される。生成されたファイルは、そのままJDTのパーサーとして使えるわけではなく、後述のように切り貼りや修正を加えてJDTに組み込んでいく必要がある。
表 2. 生成されるファイル群
ファイル名 | 説明 |
---|---|
JavaAction.java | 構文を認識した際(reduce時)に実行するアクションが出力される。 |
java_1_4.l | パーサーを生成した際のログ情報。 |
javahdr.java | 通常、空のファイルとなっている。 |
javadcl.java | トークン名を表す文字列定数や状態遷移表などが出力される。 |
javasym.java | 各トークンを表す定数が出力される。 |
javadef.java | 状態遷移表に関する基本的な情報が入っている。 |
javaprs.java | eclipseでは必要ないファイル。${eclipse}/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.javaに、ほぼ同等の機能のものが存在する。 |
次に、生成されたこれらのファイルをeclipseのソースに盛り込む。盛り込み方法を表3に示す。
表 3. JDTへの盛り込み方法
jikesPGによって生成されたファイル | 盛り込み先のeclipseのソースファイル | 修正の仕方 |
---|---|---|
JavaAction.java | ${eclipse}/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java | JavaAction.javaの中身で、Parser.javaのメソッドconsumeRule(int)を置き換える。 |
javadcl.java | javadcl.javaの文字列"$eof"を定数UNEXPECTED_EOFに、文字列"$error"を文字列"Invalid Character"に書き換える。その後、javadcl.javaのrhsとname定数フィールドで、Parser.javaのrhsとnameを置き換える。 | |
java_1_4.g | java_1_4.gの中身で、Parser.javaのgrammar()メソッド内のコメントを置き換える。 | |
javasym.java | ${eclipse}/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java | javasym.java中の文字列"TokenName$eof"を"TokenNameEOF"に、文字列"TokenName$error"を"TokenNameERROR"に書き換えてから、ITerminalSymbols.javaとTerminalTokens.javaに盛り込む。その際、次の定数を消さないように注意する。 TokenNameWHITESPACE,TokenNameCOMMENT_LINE,TokenNameCOMMENT_BLOCK,TokenNameCOMMENT_JAVADOC |
${eclipse}/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/ITerminalSymbols.java | ||
javadef.java | ${eclipse}/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java | javadef.javaのフィールド定義で、ParserBasicInformation.java内のフィールド定義を置き換える。 |
上記に加えて、javadcl.javaからUpdateParserFiles.javaを使用してリソースファイルを作成しなければならない。このとき使用するjdtcore.jarは、最初にフルビルドしたときものを使用する。
# cd ${eclipse}/plugins/org.eclipse.jdt.core # wget 'http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/jdt-core-home/howto/generate%20parser/UpdateParserFiles.java' # javac -classpath jdtcore.jar UpdateParserFiles.java # base=$PWD # cd compiler/org/eclipse/jdt/internal/compiler/parser # java -cp ${base}/jdtcore.jar:${base} UpdateParserFiles ${base}/grammar/javadcl.java |
JDTのパーサーのビルド方法が理解できたところで、次は具体的にJavaの構文を拡張してみる。
Javaの構文拡張をJDTのコンパイラに組み込む際、次の点に留意して方針を決めた。
eclipseおよびJDTの構造に合わせて、素直に拡張する。
コーディング量を極力抑える。
その結果、次のような方針でJavaの構文を拡張することにした。
新たな拡張構文を、JikesPGの文法定義ファイルに追加する。
必要であればAST(org.eclipse.jdt.internal.compiler.ast.*)に新たなノードを加える。 そうでなければ、既存のASTを組み合わせる。
具体的には、Optimistic Try文(tryブロック内で発生した例外を無視するtry文)と、 java.util.Mapインスタンスの初期化子を追加する。
構文拡張の具体例として、Optimistic(楽観的) Try文を追加する。これは、APIインターフェイス上は例外が発生し得るが、 実際には例外が発生し得ない場合のコーディングを楽にするシンタックスシュガーである。
ByteArrayOutputStream os = new ByteArrayOutputStream(); try __optimistic__ { os.close(); } |
ByteArrayOutputStream os = new ByteArrayOutputStream(); try { os.close(); } catch (Throwable th) { } |
実際の変更作業の流れは次のようになる。
文法定義ファイルの変更(文法の変更項)
スキャナーの変更(スキャナーの変更項)
パーサーの変更(トークンの開始位置の記憶項、構文木の生成項)
まず、新しく導入した__optimistic__キーワードに相当するトークンを文法定義ファイルに加える。トークンは、文法定義ファイルの$Terminalsというセクションに記述するので、次のように「__optimistic__」と言う単語を追加する。
$Terminals __optimistic__ |
既存の文法定義ファイルのコードでは、try文は次のように記述されている。
TryStatement ::= 'try' Block Catches /.$putCase consumeStatementTry(false); $break ./ TryStatement ::= 'try' Block Catchesopt Finally /.$putCase consumeStatementTry(true); $break ./ |
-- Extended Grammar { TryStatement ::= 'try' '__optimistic__' Block Catchesopt /.$putCase consumeStatementOptimisticTry(false); $break ./ TryStatement ::= 'try' '__optimistic__' Block Catchesopt Finally /.$putCase consumeStatementOptimisticTry(true); $break ./ -- Extended Grammar } |
今回、__optimistic__というキーワードを追加するので、字句解析メソッドを修正し、パーサーに新しく追加したトークンを返すようにする。 具体的には、org.eclipse.jdt.internal.compiler.parser.Scanner.scanIdentifierOrKeyword()メソッドに次のコードを追加する。
case '_' : //__optimistic__ switch (length) { case 14 : if ((data[++index] == '_') && (data[++index] == 'o') && (data[++index] == 'p') && (data[++index] == 't') && (data[++index] == 'i') && (data[++index] == 'm') && (data[++index] == 'i') && (data[++index] == 's') && (data[++index] == 't') && (data[++index] == 'i') && (data[++index] == 'c') && (data[++index] == '_') && (data[++index] == '_')) return TokenName__optimistic__; else return TokenNameIdentifier; default : return TokenNameIdentifier; } |
もう一箇所、org.eclipse.jdt.internal.compiler.parser.Scanner.toStringAction(int act)メソッドに次のコードを追加する。
case TokenName__optimistic__ : return "__optimistic__"; //$NON-NLS-1$ |
JDTではシンタックスエラーの指摘やデバッグ情報の出力などのために、主要な構文要素の開始位置と終了位置を覚えている。 新しく追加した__optimistic__トークンの位置も記憶できるように、パース時に__optimistic__トークンの開始位置を記憶するようにorg.eclipse.jdt.internal.compiler.parser.Parser.consumeToken(int)メソッドを修正する。具体的には、下記のように__optimistic__用のcaseラベルを追加する。
case TokenNameassert : case TokenNameimport : case TokenNamepackage : case TokenNamethrow : case TokenNamenew : case TokenNamedo : case TokenNameif : case TokenNamefor : case TokenNameswitch : case TokenNametry : case TokenNamewhile : case TokenNamebreak : case TokenNamecontinue : case TokenNamereturn : case TokenNamecase : case TokenName__optimistic__ : (1) pushOnIntStack(scanner.startPosition); break; |
前述の文法定義の追加により、consumeOptimisticStatementTry(boolean withFinally)メソッドが呼ばれるようになったが、このメソッドは 今回新たに追加するものであり、既存のメソッドではない。このメソッドを、org.eclipse.jdt.internal.compiler.parser.Parserクラスに直接追加する。 org.eclipse.jdt.internal.compiler.parser.Parserのサブクラスを作成し、それに追加しないのは、JDT内でorg.eclipse.jdt.internal.compiler.parser.Parserを 継承しているクラスが他にもあるためだ。 Parserクラスは、インスタンス変数としてAST(org.eclipse.jdt.internal.compiler.ast.*)のスタック(astStack)をメインテナンスしている。構文を認識したら、このASTスタックを操作してreduce操作を行うようにする。他にも、expressionStackやintStack(ソース上の位置や、modifierの指定状態などを表す)、identifierStackもある。先ほどの主要なトークンの開始位置もintStack上に一時的に保存それる。実際にconsumeOptimisticStatementTry(boolean withFinally)メソッドを実装すると次のようになる。
protected void consumeStatementOptimisticTry(boolean withFinally) { //TryStatement ::= 'try' '__optimistic__' Block Catchesopt //TryStatement ::= 'try' '__optimistic__' Block Catchesopt Finally consumeStatementTry(withFinally); (1) // create OptimisticTryStatement node from TryStatement on ast stack // and pushOnAstStack TryStatement tryStmt = (TryStatement)astStack[astPtr]; (2) final int optimisticLen = "__optimistic__".length(); // swap try and __optimistic__ start positions int optimisticStart = tryStmt.sourceStart; long optimisticRange = (((long)optimisticStart) << 32) | (optimisticStart + optimisticLen); tryStmt.sourceStart = intStack[intPtr--]; (3) if (tryStmt.catchBlocks == null) { tryStmt.catchBlocks = new Block[0]; } // add a catch block to ignore a throwable. { (4) Block[] catchBlocks = tryStmt.catchBlocks; tryStmt.catchBlocks = new Block[catchBlocks.length + 1]; System.arraycopy(catchBlocks, 0, tryStmt.catchBlocks, 0, catchBlocks.length); tryStmt.catchBlocks[catchBlocks.length] = Block.EmptyWith(optimisticStart, optimisticStart + optimisticLen); // start, end } if (tryStmt.catchArguments == null) { tryStmt.catchArguments = new Argument[0]; } // add a catch argument to ignore a throwable. { (4) Argument[] catchArguments = tryStmt.catchArguments; tryStmt.catchArguments = new Argument[catchArguments.length + 1]; System.arraycopy(catchArguments, 0, tryStmt.catchArguments, 0, catchArguments.length); char[][] throwableType = { "java".toCharArray(), "lang".toCharArray(), "Throwable".toCharArray() }; long[] pos = { optimisticRange, optimisticRange, optimisticRange }; // (start<<32 | end), ... Argument arg = new Argument( "th".toCharArray(), optimisticRange, // name pos new QualifiedTypeReference(throwableType, pos), AccDefault); // modifiers arg.declarationSourceStart = optimisticStart; //pos arg.declarationSourceEnd = optimisticStart + optimisticLen; tryStmt.catchArguments[catchArguments.length] = arg; } } |
Optimistic Tryの追加では、ASTを生成する時点でTryStatementノードに細工するすることにしたので、新たなASTノードの追加は行わなかった。
もう一つの構文拡張の具体例として、Map初期化子を追加する。これは、Perlで連想配列を初期化するイメージで、Mapインスタンスを初期化する構文を提供するものである。
Map colors = %{ "red" => new Integer(0xff0000), "green" => new Integer(0x00ff00), "blue" => new Integer(0x0000ff) }; |
上記のように記述すると、下記のコードと同じ動作をする。
Map colors = new HashMap(); colors.put("red", new Integer(0xff0000)); colors.put("green", new Integer(0x00ff00)); colors.put("blue", new Integer(0x0000ff)); |
=>の両辺は、リファレンス型でなければならない。
%{は、%と{の組み合わせではなく、単一のトークンとした。%と{の組み合わせにした場合、パーサー生成時にconflictが発生したためである。既存のJavaの文法定義で、 キャストが次のように定義されている。
-- Expression is here only in order to make the grammar LL1 CastExpression ::= PushLPAREN Expression PushRPAREN InsideCastExpressionLL1 UnaryExpressionNotPlusMinus /.$putCase consumeCastExpressionLL1(); $break ./ |
そのため、次のコードの%が、剰余演算子なのか、Map初期化子を導くものなのか、(意味解析前の)構文解析時に判定できないためと思われる。
(1) % { "k"=>"v" } // 意味的には正しくない。構文解析上、キャスト式か算術式か曖昧。 |
実際の変更作業の流れは次のようになる。
まず、下記のようにトークンを2つ追加する。文法定義ファイルでは、通常、トークンはEQUAL_GREATERのようなシンボルで表す。しかし、可読性を挙げるために、'=>'のようなリテラル風の表記をするためのエイリアスを定義できる。
$Terminals EQUAL_GREATER MAP_START … $Alias '=>' ::= EQUAL_GREATER '%{' ::= MAP_START … |
既存のArrayInitializerを参考にし、次のように、構文を追加した。
-- Extended Grammar { Primary -> MapInitializer MapInitializer ::= '%{' ,opt '}' /.$putCase consumeEmptyMapInitializer(); $break ./ MapInitializer ::= '%{' MapEntries '}' /.$putCase consumeMapInitializer(); $break ./ MapInitializer ::= '%{' MapEntries , '}' /.$putCase consumeMapInitializer(); $break ./ MapEntries ::= MapEntry MapEntries ::= MapEntries ',' MapEntry /.$putCase consumeMapEntries(); $break ./ MapEntry ::= Expression '=>' Expression /.$putCase consumeMapEntry(); $break ./ -- Extended Grammar } |
上記の変更を行ったあと、jikesPGでパーサーを生成する。生成された、 javadcl.javaの中のpublic final staticString[]name の中の"MAP_START"と"EQUAL_GREATER"を、それぞれ、"%{"と"=>"に変更し、Parser.javaに反映させる。 これを行わないと、エラーメッセージなどで、%{などの代わりにMAP_STARTとシンボル名が表示されてしまう。
今回、%{、 =>というキーワードを追加するので、字句解析メソッドを修正し、パーサーに新しく追加したトークンを返すようにする。 具体的には、org.eclipse.jdt.internal.compiler.parser.Scanner.getNextToken()メソッドに次のようにコードを変更する。
case '%' : if (getNextChar('=')) return TokenNameREMAINDER_EQUAL; else if (getNextChar('{')) return TokenNameMAP_START; return TokenNameREMAINDER; … case '=' : if (getNextChar('=')) return TokenNameEQUAL_EQUAL; else if (getNextChar('>')) return TokenNameEQUAL_GREATER; return TokenNameEQUAL; |
もう一箇所、org.eclipse.jdt.internal.compiler.parser.Scanner.toStringAction(int act)メソッドに次のコードを追加する。
case TokenNameEQUAL_GREATER : return "=>"; //$NON-NLS-1$ case TokenNameMAP_START : return "%{"; //$NON-NLS-1$ |
新たに追加した構文要素に対応するconsumeXxx()メソッドを、次のようにorg.eclipse.jdt.internal.compiler.parser.Parserクラスに追加する。
protected void consumeEmptyMapInitializer() { mapInitializer(0); (1) } protected void consumeMapInitializer() { mapInitializer(expressionLengthStack[expressionLengthPtr--]);(1) } /** * * @param length length is the size of the Map Initializer * expressionPtr points on the last elt of the mapInitializer, * in other words, it has not been decremented yet. */ public final void mapInitializer(int length) { MapInitializer mi = new MapInitializer(); if (length != 0) { (2) expressionPtr -= length; System.arraycopy(expressionStack, expressionPtr + 1, mi.expressions = new Expression[length], 0, length); for (int i = 0; i < length; i++) { ((MapEntryExpression)mi.expressions[i]).mapInit = mi; } } pushOnExpressionStack(mi); (3) //positionning (4) mi.sourceEnd = endStatementPosition; int searchPosition = length == 0 ? endPosition + 1 : mi.expressions[0].sourceStart; try { //does not work with comments(that contain '%{') nor '%{' describes as a unicode.... while (! (scanner.source[--searchPosition] == '%' && scanner.source[searchPosition + 1] == '{')) { } } catch (IndexOutOfBoundsException ex) { //should never occur (except for strange cases like whose describe above) searchPosition = (length == 0 ? endPosition : mi.expressions[0].sourceStart) - 1; } mi.sourceStart = searchPosition; } protected void consumeMapEntries() { concatExpressionLists(); (5) } protected void consumeMapEntry() { expressionPtr -= 1; (6) expressionLengthPtr -= 1; expressionStack[expressionPtr] = new MapEntryExpression( expressionStack[expressionPtr], expressionStack[expressionPtr + 1]); } |
今回は、新たなASTノードとして、MapEntryExpressionとMapInitializerを追加する。両者とも、Expressionのサブクラスとした(表1参照)。ASTの型の階層構造を、図1に示す。 Statementが提供するメソッドは、通常、resolve→analyseCode→generateCodeの順で実行される。
表 1. 関連するASTノード
ASTの種類 | 用途 |
---|---|
org.eclipse.jdt.internal.compiler.ast.Statement |
Statementが提供するメソッド
|
org.eclipse.jdt.internal.compiler.ast.Expression |
Expressionが提供するメソッド
|
org.eclipse.jdt.internal.compiler.ast.MapEntryExpression | 構文「key => value」を表すノード。Map.put(key,value)の呼び出しに相当するコードを生成する。このノード全体としての型は、voidとした。 |
org.eclipse.jdt.internal.compiler.ast.MapInitializer | 構文「%{ MapEntriesopt }」 を表すノード。new java.util.HashMap()に相当するコードを生成する。このノード全体としての型は、java.util.Mapとした。 |
まず、MapEntryExpressionのresolveTypeの実装を示す。
public TypeBinding resolveType(BlockScope scope) { constant = NotAConstant; (1) TypeBinding keyType = (2) key.resolveTypeExpecting(scope, scope.getJavaLangObject()); TypeBinding valueType = (2) value.resolveTypeExpecting(scope, scope.getJavaLangObject()); if (putMsg == null) { (3) putMsg = new MessageSend(); putMsg.selector = new char[] { 'p', 'u', 't' }; putMsg.receiver = mapInit.mapObj; putMsg.arguments = new Expression[] { key, value }; putMsg.resolveType(scope); } return VoidBinding; } |
次に、MapEntryExpressionのanalyseCodeの実装を示す。
public FlowInfo analyseCode( BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) { flowInfo = key.analyseCode(currentScope, flowContext, flowInfo)(1) .unconditionalInits(); flowInfo = value.analyseCode(currentScope, flowContext, flowInfo)(1) .unconditionalInits(); return flowInfo; } |
最後に、MapEntryExpressionのgenerateCodeの実装を示す。
public void generateCode( BlockScope currentScope, CodeStream codeStream, boolean valueRequired) { // objref on the operand stack int pc = codeStream.position; (1) // save objref (2) codeStream.dup(); // generate arguments if (putMsg.arguments != null) { (3) for (int i = 0; i < putMsg.arguments.length; i++) { putMsg.arguments[i].generateCode(currentScope, codeStream, true); } } // actual message invocation (4) if (putMsg.codegenBinding.declaringClass.isInterface()) { codeStream.invokeinterface(putMsg.codegenBinding); } else { codeStream.invokevirtual(putMsg.codegenBinding); } // operation on the returned value (5) if (valueRequired) { // implicit conversion if necessary codeStream.generateImplicitConversion(putMsg.implicitConversion); } else { // pop return value if any switch (putMsg.binding.returnType.id) { case T_long : case T_double : codeStream.pop2(); break; case T_void : break; default : codeStream.pop(); } } codeStream.recordPositionsFrom(pc, (6) (int) (putMsg.nameSourcePosition >>> 32)); } |
MapInitializerのresolveTypeの実装を示す。
public TypeBinding resolveType(BlockScope scope) { constant = NotAConstant; if (alloc == null) { (1) alloc = new AllocationExpression(); final char[][] mapClass = { { 'j', 'a', 'v', 'a' }, { 'u', 't', 'i', 'l' }, { 'H', 'a', 's', 'h', 'M', 'a', 'p' } }; final long sourceRange = (((long) sourceStart) << 32) | sourceEnd; final long[] poss = { sourceRange, sourceRange, sourceRange }; alloc.type = new QualifiedTypeReference(mapClass, poss); alloc.sourceStart = sourceStart; alloc.sourceEnd = sourceEnd; alloc.arguments = null; alloc.resolveType(scope); mapObj = alloc; } if (expressions != null) { (2) for (int i = 0; i < expressions.length; i++) { expressions[i].resolveType(scope); } } if (resolvedBinding == null) { (3) final char[][] mapClass = { { 'j', 'a', 'v', 'a' }, { 'u', 't', 'i', 'l' }, { 'M', 'a', 'p' } }; resolvedBinding = scope.getType(mapClass); } return resolvedBinding; } |
MapInitializerのanalyseCodeは、無条件に子ノードを評価するだけなので、MapEntryExpression同様、次のような単純な実装となる。
public FlowInfo analyseCode( BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) { if (alloc != null) { flowInfo = alloc.analyseCode(currentScope, flowContext, flowInfo) .unconditionalInits(); } if (expressions != null) { for (int i = 0; i < expressions.length; i++) { flowInfo = expressions[i].analyseCode(currentScope, flowContext, flowInfo) .unconditionalInits(); } } return flowInfo; } |
最後に、MapInitializerのgenerateCodeの実装を示す。
public void generateCode( BlockScope currentScope, CodeStream codeStream, boolean valueRequired) { alloc.generateCode(currentScope, codeStream, true); (1) // objref on operand stack if (expressions != null) { (2) for (int i = 0; i < expressions.length; i++) { expressions[i].generateCode(currentScope, codeStream, false); } } if (!valueRequired) { (3) codeStream.pop(); } } |
ASTをトラバースするビジターインターフェイス(org.eclipse.jdt.internal.compiler.IAbstractSyntaxTreeVisitor)に、上記の追加した二つのノードをvisitするメソッドを追加する。
// Extention void endVisit(MapEntryExpression mapEntryExpression, BlockScope scope); boolean visit(MapEntryExpression mapEntryExpression, BlockScope scope); void endVisit(MapInitializer mapInitializer, BlockScope scope); boolean visit(MapInitializer mapInitializer, BlockScope scope); |
上記のインターフェイスを実装したアダプター(org.eclipse.jdt.internal.compiler.AbstractSyntaxTreeVisitorAdapter)にも、メソッドを追加する。
// Extention public void endVisit(MapEntryExpression mapEntryExpression, BlockScope scope) { } public boolean visit(MapEntryExpression mapEntryExpression, BlockScope scope) { return true; } public void endVisit(MapInitializer mapInitializer, BlockScope scope) { } public boolean visit(MapInitializer mapInitializer, BlockScope scope) { return true; } |
以下に、JDTのコンパイラを変更する際のノウハウをいくつか示す。
表 2. コード変更のノウハウ
表題 | 詳細 |
---|---|
org.eclipse.jdt.internal.compiler.lookup.TypeBindingの作り方 | org.eclipse.jdt.internal.compiler.lookup.BlockScope.getType()やgetJavaLangObject()など、getXxxメソッドを使う。 |
パーサーのスタック管理 | 前述のようにorg.eclipse.jdt.internal.compiler.parser.Parserではいくつかのスタックを管理している。これらのスタックは、単純なスタックではなく論理的にはスタック(またはリスト)のスタックである。これを、一つのスタックと、そのスタック上に積まれた要素数のスタックとして実装している。 |
eclipseのソースを読むにはeclipseを使う | JDTを効率的に読む項eclipseのコンパイラ章を参照。 |
前述の二つの構文拡張をeclipseに盛り込んでビルド&起動し、動作を確認する方法を以下に述べる。
前述のJava構文拡張を行うためのorg.eclipse.jdt.coreプラグインに対する差分ファイル(jdt-patch.zip)からeclipseをビルドする方法を述べる。
まず、文法定義ファイルからのコンパイル方法章で述べたように、eclipse2.1のソースをフルビルドする。その後、次のようにして差分ファイルでJDTのソースを上書きする。
# cd ${eclipse}/plugins # unzip /path/to/jdt-patch.zip |
次に、新しい文法定義ファイルからjikesPGを使用してパーサーを生成し、結果をJDTのソースに盛り込む。下記のAntのプロパティを各自の環境に合わせて設定した後、次のコマンドを実行する。これにより、パーサーの生成項文法定義ファイルからのコンパイル方法章、eclipseソースへの盛り込み項文法定義ファイルからのコンパイル方法章で述べた手順が自動的に実行される。
表 3. パーサー生成に設定が必要なAntプロパティ
プロパティ名 | 設定すべき値 |
---|---|
jdtcore.jar | 事前のフルビルドで出来上がったjdtcore.jarファイルへのパス。eclipse 2.1のフルビルド項文法定義ファイルからのコンパイル方法章参照。 |
jikespg.home | jikesPGをインストールしたディレクトリへのパス。jikesPGの入手とインストール項文法定義ファイルからのコンパイル方法章参照。 |
jikespg | jikespgコマンドへのパス。省略した場合は、${jikespg.home}/bin/jikespgが使用される。 |
# cd ${eclipse}/plugins/org.eclipse.jdt.core # ant -f build-grammar.xml clean (1) # ant -f build-grammar.xml (2) # ant clean (3) # ant (3) |
最後に、文法定義ファイルからのコンパイル方法章で述べたようにeclipse全体を再ビルドする。
以下に動作確認用のコードを示す。J2SE1.4で追加されたassert文を使用しているので、eclipseを次のように設定して、1.4の機能を有効にする。 Window->PreferencesでPreferencesダイアログを開き、左側の設定項目のツリー表示から、 Java->Compilerを選ぶ。その後、右側のタブの中からCompliance and Classfilesタブを選び、Compiler compliance levelを1.4にし、Use default compliance settingsにチェックをつける。
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class Test { static void testOptimistic() { ByteArrayOutputStream os = new ByteArrayOutputStream(); try __optimistic__ { os.close(); throw new Exception("error"); } os = new ByteArrayOutputStream(); try __optimistic__ { os.close(); throw new Exception("error"); } finally { System.out.println("fin1 ok"); assert true; } try __optimistic__ { os.close(); throw new IOException("error"); } catch (IOException e) { System.out.println("IOE ok"); } finally { System.out.println("fin2 ok"); assert true; } try __optimistic__ { os.close(); throw new Exception("error"); } catch (IOException e) { assert false; throw new RuntimeException("error"); } finally { System.out.println("fin3 ok"); assert true; } } static void testMapInit() { Map a = %{ "key" => "value", "key2" => new Integer(100*40), "abc" => null }; assert a.size() == 3; System.out.println(a.get("key2")); assert a.get("abc") == null; assert new Integer(4000).equals(a.get("key2")); assert "xx".equals(%{"key" => "xx"}.get("key")); System.out.println(%{ "key2" => "vv"}.get("key2")); HashMap hm = (HashMap)%{ "a" => "a" + "key" + "value" }; a = %{ null => null, }; assert a.get(null) == null; a = %{ null => "1", }; assert "1".equals(a.get(null)); a = %{, }; assert a.size() == 0; a = %{}; assert a.size() == 0; } public static void main(String[] args) { testOptimistic(); testMapInit(); System.out.println("Everything is ok."); } } |
上記のコードをコンパイル&実行し、下記の出力が得られれば正しく動作している。
fin1 ok IOE ok fin2 ok fin3 ok 4000 vv Everything is ok. |
また、ソースとeclipseにより生成された.classファイルを、次のようにJDK付属のデバッガ(jdb)を使用してステップ実行すると、デバッグ情報(バイトコードに対応する行番号)も正しく設定されていることが確認できる。
# jdb -classpath . -sourcepath . jdb の初期化中です... > stop in Test.main(java.lang.String[]) ブレークポイント Test.main(java.lang.String[]) を保留しています。 クラスがロードされた後に設定されます。 > run Test Test を実行します uncaught java.lang.Throwable を設定しました 保留した uncaught java.lang.Throwable を設定しました > VM が起動しました: 保留した ブレークポイント Test.main(java.lang.String[]) を設定しました ブレークポイントのヒット: "スレッド=main", Test.main(), line=64 bci=0 64 testOptimistic(); main[1] step > ステップ完了: "スレッド=main", Test.testOptimistic(), line=8 bci=0 8 ByteArrayOutputStream os = new ByteArrayOutputStream(); … |
JDTでは、Javaの文法はorg.eclipse.jdt.internal.compiler.parserパッケージに集約されているわけではない。例えば、org.eclipse.jdt.core.dom.ASTConverter.convert(org.eclipse.jdt.internal.compiler.ast.TryStatement statement)では、次のような状況にある。
このメソッドは、コンパイル用のorg.eclipse.jdt.internal.compiler.astパッケージのASTから、検査/エラー指摘用のorg.eclipse.jdt.core.domパッケージのASTに変換する。
コンパイル用のAST(org.eclipse.jdt.internal.compiler.ast.*)ではトークンや非終端記号の位置を部分的に持っているが、検査/エラー指摘用のAST(org.eclipse.jdt.core.dom.*)ではより多くの位置情報が必要である。例えば、catch節の開始位置は、コンパイル用のASTにはないが、検査/エラー指摘用のASTには必要になる。
不足分の位置情報を取得するために、org.eclipse.jdt.core.dom.ASTConverter.convert()メソッドはorg.eclipse.jdt.core.dom.ASTConverter.retrieveStartingCatchPosition(int start, int end)メソッドを呼び出す。
org.eclipse.jdt.core.dom.ASTConverter.retrieveStartingCatchPosition(int start, int end)メソッドは、文法定義とは無関係に、指定された範囲内にcatchトークンがあるか探す。(その際に使うスキャナーはコンパイル用のものを流用している)
このように、リファクタリングツール、エラー指摘/修正、コーディングアシスト、デバッガなどの機能には、文法に依存したコードが散在すると思われる。これらのコードも精査&修正しないと、最悪eclipseがフリーズする。実際、ブレークポイントを設定したり、次のコードのエラー個所を修正させようと何度か試みるとフリーズする。
ByteArrayOutputStream os = new ByteArrayOutputStream(); int x = 1000000000L; // キャストが必要 try __optimistic__ { os.close(); throw new Exception("error"); } |
その他に、Map初期化子の構文中に、ユニコードシーケンスで書かれた%{やコメント中の%{があった場合、Map初期化子の開始位置を正しく判定できないという問題もある。
今回の構文拡張では、方針項Java構文拡張章で述べたように、JDTの構造に素直に従って拡張した。 そのため、JDTの構造に由来するいくつかの限界が存在する。
表 1. 構文拡張の限界
限界/制限 | 理由 |
---|---|
LALR(1)の文法でなくてはならない。 | パーサージェネレータjikesPGがLALR(1)しかサポートしていない。仮にLALR(1)で 表現できる文法でも、既存の文法定義を大きく変更しなければならない場合は、JDTの修正量が多く実現が難しい。 |
JDTに手を加えなければならない。 | JDTには、文法に関するエクステンションポイントが用意されていないので、 JDTのコードを直接変更する必要がある。 |
文法は動的に変更できない | JDTのコンパイラを実行時に再構築/再ロードする仕組みが用意されていないので、 プラグインなどにより、実行時に文法を変えることはできない。 |
コンパイラのみの変更では安定動作しない | 文法に依存したコードが、デバッガやリファクタリングツールなどにも存在するため、それらもあわせて変更しないと、一貫性が損なわれ誤動作することがある。 |
テストが困難(推測) | eclipseのCVSリポジトリにテストコードがあるので、それを利用することができる。しかし、文法変更の影響範囲がわからないため、とりあえずテストコードを実行して、テストに失敗した所を調べるという手順になると思われる。テストコードの変更個所もまた分散していると思われる。 |
今回、新しい構文をJDTに組み込んでみた結果、pxmlを組み込む際の障害がいくつか明らかになった。 しかしながら、結論を先に述べると、多少pxmのl文法を変更することでpxmlをJDTに組み込むことは(開発工数を度外視すれば)十分可能と思われる。 以下、その障害と回避方法等の検討結果を述べる。
jikesPGはLALR(1)の文法しかサポートしていない。JDTのJavaの既存の文法と合わせた場合、pxmlの文法がLALR(1)でないので、pxmlの文法をLALR(1)に変更しなければならない。
pxmlの文法では、TagはIdentifierから構成されるが、JDTで使用されているパーサーは キーワード("if"や"class"など)はIdentifierではなく、個別ににシンボルを割り当てられたトークンである。
# pxmlの文法 Tag: Identifier Identifier : Identifier |
if(true); |
この問題を回避するにはいくつかの方法がある。
Tagの構成要素にキーワードも含める。ただしこの方法では"xml-valid.tag"というタグ名には対応できない。"-"や"."が演算子扱いになってしまい、"-"や"."の前後にスペースがあった場合、エラーにできない。
Tagの定義を次のように変更して、StringLiteralも書けるようにする。キーワードや"-"や"."を含む場合はStringLiteralとして記述する。
Tag: TagElement TagElement : TagElement TagElement: Identifier StringLiteral |
本ドキュメントは、DocBook XML 4.2で記述されており、HTML、Plain Text、PDF等の形式への変換が可能である。 変換には、XSLTを利用したツール(docbook-xsl)や、Linuxのディストリビューションに含まれるDSSSLを利用したツール(Open Jade, docbook2htmlなど)を利用することができる。
plugins/org.eclipse.jdt.core plugins/org.eclipse.jdt.core/build.xml plugins/org.eclipse.jdt.core/compiler plugins/org.eclipse.jdt.core/compiler/org plugins/org.eclipse.jdt.core/compiler/org/eclipse plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser4.rsc plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/SourceConstructorDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/NLSLine.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser2.rsc plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredElement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredInitializer.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser5.rsc plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser3.rsc plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredType.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredField.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/SourceMethodDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredUnit.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser1.rsc plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredBlock.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredMethod.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredImport.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Scanner.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredLocalVariable.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/SourceFieldDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/ExceptionLabel.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/IntegerCache.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/MethodNameAndTypeCache.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/CaseLabel.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/ResetStateForCodeGenerationVisitor.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/FloatCache.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/Opcodes.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/FieldNameAndTypeCache.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/Label.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/CharArrayCache.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/ConstantPool.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/AttributeNamesConstants.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/LongCache.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/DoubleCache.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/QualifiedNamesConstants.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/ObjectCache.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/DoubleConstant.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/ShortConstant.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/ByteConstant.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/BooleanConstant.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/CharConstant.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/LongConstant.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/Constant.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/ITypeRequestor.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/StringConstant.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/ReferenceContext.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/IntConstant.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/FloatConstant.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ImportReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Break.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ArrayAllocationExpression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/PostfixExpression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/MagicLiteral.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/SuperReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Block.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/BranchStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/EqualExpression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/BinaryExpression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/WhileStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Case.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/MessageSend.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Argument.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/SynchronizedStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Reference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/OperatorExpression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CompoundAssignment.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedSuperReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AnonymousLocalTypeDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/OR_OR_Expression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/StringLiteral.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Statement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/NameReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/LocalTypeDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedThisReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Clinit.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FloatLiteral.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AssertStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ClassLiteralAccess.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/PrefixExpression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Continue.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Expression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/MemberTypeDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CharLiteral.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/OperatorIds.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/DefaultCase.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TrueLiteral.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/IfStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/DoubleLiteral.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/InstanceOfExpression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/LabeledStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ForStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FalseLiteral.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Initializer.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ThisReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteral.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/SingleTypeReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/DoStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CastExpression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ThrowStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/UnaryExpression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/InnerTypeDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/NumberLiteral.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/MethodDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AstNode.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ArrayReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConstructorDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/EmptyStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedTypeReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteral.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ArrayInitializer.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AND_AND_Expression.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/SingleNameReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ExplicitConstructorCall.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AbstractMethodDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/NullLiteral.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Assignment.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ArrayTypeReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ExtendedStringLiteral.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Literal.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ArrayQualifiedTypeReference.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ICompilerRequestor.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/InnerClassInfo.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFormatException.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileStruct.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/MethodInfo.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/FieldInfo.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/TypeConstants.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LocalTypeBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Binding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LocalVariableBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/TypeIds.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BaseTypeBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ProblemPackageBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MemberTypeBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/InnerEmulationDependency.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ProblemReferenceBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/TypeBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/TagBits.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SyntheticAccessMethodBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/CompilerModifiers.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/VariableBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BaseTypes.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ArrayBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SyntheticFieldBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/InvocationSite.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ProblemMethodBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/PackageBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ImportBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BindingIds.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ProblemReasons.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/NestedTypeBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/UnresolvedReferenceBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ProblemFieldBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SyntheticArgumentBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ProblemBinding.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodScope.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/Util.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/HashtableOfObject.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/messages.properties plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/SimpleNameVector.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/HashtableOfLong.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/ObjectVector.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/CompoundNameVector.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/HashtableOfType.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/HashtableOfPackage.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/HashtableOfInt.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/ISourceType.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/INameEnvironment.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/ISourceField.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IBinaryType.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/ISourceMethod.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IGenericType.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IBinaryNestedType.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IBinaryField.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IBinaryMethod.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IGenericMethod.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IDependent.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IGenericField.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/ICompilationUnit.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IConstants.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/AbortType.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/AbortMethod.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/messages.properties plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemHandler.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/DefaultProblem.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/AbortCompilation.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ShouldNotImplement.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemSeverities.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/AbortCompilationUnit.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/DefaultProblemFactory.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/IProblemFactory.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow/InsideSubRoutineFlowContext.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow/FlowContext.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow/ConditionalFlowInfo.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow/FlowInfo.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow/LoopingFlowContext.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow/SwitchFlowContext.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow/FinallyFlowContext.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow/ExceptionHandlingFlowContext.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow/LabelFlowContext.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow/InitializationFlowContext.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow/UnconditionalFlowInfo.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/SourceElementRequestorAdapter.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/IDebugRequestor.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/IErrorHandlingPolicy.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ISourceElementRequestor.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/IAbstractSyntaxTreeVisitor.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/Compiler.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ConfigurableOption.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/DocumentElementParser.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/SourceElementParser.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/IDocumentElementRequestor.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ClassFile.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/CompilationResult.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/AbstractSyntaxTreeVisitorAdapter.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/package.html plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/CharOperation.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/InvalidInputException.java plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/IProblem.java plugins/org.eclipse.jdt.core/search plugins/org.eclipse.jdt.core/search/org plugins/org.eclipse.jdt.core/search/org/eclipse plugins/org.eclipse.jdt.core/search/org/eclipse/jdt plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/OrPathCombiner.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/SuperInterfaceReferencePattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/OrPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MultipleSearchPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/OrNameCombiner.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/SearchPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchSet.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/DeclarationOfReferencedMethodsPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/TypeReferencePattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MethodReferencePattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/FieldDeclarationPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/DeclarationOfReferencedTypesPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchingOpenable.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/JavaSearchNameEnvironment2.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/PotentialMatch.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/FieldReferencePattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchingOpenableSet.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/PotentialMatchSet.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocator2.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/AndPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MethodPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/ClasspathSourceDirectory.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/DeclarationOfAccessedFieldsPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/ConstructorDeclarationPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/JavaSearchNameEnvironment.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MethodDeclarationPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchingNodeSet.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/QualifiedTypeDeclarationPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/ConstructorReferencePattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/IIndexSearchRequestor.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AddJarFileToIndex.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AbstractIndexer.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/IndexManager.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AddCompilationUnitToIndex.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/RemoveFromIndex.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/ReadWriteMonitor.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/SaveIndex.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/SourceIndexerRequestor.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/IIndexConstants.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/IndexRequest.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/BinaryIndexer.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AddClassFileToIndex.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/RemoveFolderFromIndex.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AddFileToIndex.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/SourceIndexer.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/IndexSelector.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/SubTypeSearchJob.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/processing plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/processing/JobManager.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/processing/IJob.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/IInfoConstants.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/PathCollector.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/IndexSearchAdapter.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/messages.properties plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/Util.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/HierarchyScope.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/PatternSearchJob.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/JavaWorkspaceScope.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/JavaSearchScope.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/AbstractSearchScope.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/IndexOutput.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/IIndexConstants.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/BlocksIndexOutput.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/Field.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/FileDocument.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/Index.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/BlocksIndexInput.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/IndexInput.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/Block.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/WordEntryHashedArray.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/SimpleIndexBlock.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/IndexSummary.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/JarFileDocument.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/IndexedFile.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/PropertyDocument.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/MergeFactory.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/WordEntry.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/JarFileEntryDocument.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/IndexerOutput.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/IndexedFileHashedArray.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/GammaCompressedIndexBlock.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/LRUCache.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/InMemoryIndex.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/SafeRandomAccessFile.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/CodeByteStream.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/SimpleIndexInput.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/FileListBlock.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/Util.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/ILRUCacheable.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/ICacheEnumeration.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/IndexBlock.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/IFileDocument.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/EntryResult.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/Int.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/IDocument.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/IEntryResult.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/IQueryResult.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/DocumentFactory.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/IIndexer.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/IIndex.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/IIndexerOutput.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/ISearchPattern.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchResultCollector.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/package.html plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/ITypeNameRequestor.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchEngine.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchConstants.java plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchScope.java plugins/org.eclipse.jdt.core/dom plugins/org.eclipse.jdt.core/dom/org plugins/org.eclipse.jdt.core/dom/org/eclipse plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/BreakStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/VariableBinding.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CompilationUnitResolver.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ConditionalExpression.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/IMethodBinding.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/TypeLiteral.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/SynchronizedStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/MethodDeclaration.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/SuperConstructorInvocation.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/NullLiteral.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/AnonymousClassDeclaration.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CompilationUnit.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/SimpleType.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/BindingResolver.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ContinueStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ArrayType.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/VariableDeclarationExpression.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ExpressionStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ClassInstanceCreation.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/MethodInvocation.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CharacterLiteral.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ArrayCreation.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/SuperMethodInvocation.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ThisExpression.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/package.html plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ArrayAccess.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/Assignment.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/NaiveASTFlattener.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CastExpression.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ThrowStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/SwitchCase.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/EmptyStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/NumberLiteral.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/PostfixExpression.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/VariableDeclarationFragment.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/TypeDeclaration.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/PrefixExpression.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/IPackageBinding.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/Type.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTVisitor.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ParenthesizedExpression.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/Message.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/Statement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/PrimitiveType.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/DefaultBindingResolver.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/VariableDeclarationStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/PackageDeclaration.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/AssertStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/LabeledStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/SimpleName.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/Block.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/BodyDeclaration.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/InfixExpression.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTConverter.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/IVariableBinding.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/IBinding.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/IfStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTNode.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/SuperFieldAccess.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ReturnStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/AST.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/TypeBinding.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/Javadoc.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/FieldDeclaration.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/SingleVariableDeclaration.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/DoStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/QualifiedName.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ArrayInitializer.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/TryStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ImportDeclaration.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/MethodBinding.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/TypeDeclarationStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTSyntaxErrorPropagator.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/Initializer.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/WhileStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/Modifier.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTMatcher.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/BooleanLiteral.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/PackageBinding.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/SwitchStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/Expression.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/FieldAccess.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ConstructorInvocation.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/StringLiteral.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/VariableDeclaration.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ForStatement.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CatchClause.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/Name.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/InstanceofExpression.java plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ITypeBinding.java plugins/org.eclipse.jdt.core/model plugins/org.eclipse.jdt.core/model/org plugins/org.eclipse.jdt.core/model/org/eclipse plugins/org.eclipse.jdt.core/model/org/eclipse/jdt plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IFieldInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IClassFileAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IClassFileDisassembler.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/ILineNumberAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPool.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/package.html plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/ClassFormatException.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/ISourceAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/OpcodeStringValues.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IExceptionTableEntry.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IBytecodeVisitor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IInnerClassesAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IModifierConstants.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/ICodeAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolEntry.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/CompilationUnitSorter.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IClassFileReader.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantValueAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/ClassFileBytesDisassembler.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/ILocalVariableAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/ByteCodeVisitorAdapter.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/ILocalVariableTableEntry.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IMethodInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IAttributeNamesConstants.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolConstant.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IInnerClassesAttributeEntry.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IExceptionAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IOpcodeMnemonics.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom/IDOMMethod.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom/IDOMImport.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom/IDOMNode.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom/package.html plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom/IDOMField.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom/IDOMMember.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom/IDOMPackage.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom/IDOMFactory.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom/IDOMCompilationUnit.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom/DOMFactory.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom/DOMException.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom/IDOMType.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/jdom/IDOMInitializer.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IImportDeclaration.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathEntry.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IWorkingCopy.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ISourceReference.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaElementDelta.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IOpenable.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IPackageFragmentRoot.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ICodeCompletionRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaCore.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/CorrectionEngine.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/IScanner.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/ITerminalSymbols.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ElementChangedEvent.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/NamingConventions.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaModel.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaElement.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathContainer.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IElementChangedListener.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IType.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ClasspathVariableInitializer.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaProject.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ICodeAssist.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IMethod.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Flags.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IPackageFragment.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaModelMarker.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/CompletionRequestorAdapter.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ClasspathContainerInitializer.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/eval plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/eval/IEvaluationContext.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/eval/package.html plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/eval/IGlobalVariable.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/eval/ICodeSnippetRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IProblemRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ICorrectionRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ToolFactory.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IBuffer.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IPackageDeclaration.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IMember.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IImportContainer.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClassFile.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ICompilationUnit.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ITypeHierarchyChangedListener.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IParent.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IInitializer.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ITypeHierarchy.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ICodeFormatter.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IBufferChangedListener.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IRegion.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaConventions.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ISourceManipulation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ICompletionRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaModelStatus.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/package.html plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ISourceRange.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaModelStatusConstants.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IField.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IBufferFactory.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaModelException.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/BufferChangedEvent.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ClassFile.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreatePackageFragmentOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/InternalNamingConventions.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnitElementInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/CharArrayOps.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/IDumpable.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ExceptionAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/LRUCache.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/AnonymousFileSource.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ReferenceInfoAdapter.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ToStringSorter.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Disassembler.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/SourceFileAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ClassFileReader.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ClassFileAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/LocalVariableTableEntry.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ILRUCacheable.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Util.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ClassFileStruct.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ConstantPoolEntry.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/LineNumberAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/InnerClassesAttributeEntry.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/PublicScanner.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/FieldInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ICacheEnumeration.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ExceptionTableEntry.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/PerThreadObject.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/messages.properties plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/CharArrayBuffer.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/SimpleLookupTable.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Dumper.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ConstantPool.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ConstantValueAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/LocalVariableAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/MethodInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/InnerClassesAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/CodeAttribute.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/WorkingCopyElementInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NameLookup.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/RegionBasedHierarchyBuilder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/HierarchyType.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/HierarchyBinaryType.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/RegionBasedTypeHierarchy.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/IHierarchyRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Region.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/MoveResourceElementsOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BufferManager.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateElementInCUOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ModelUpdater.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/NameEnvironment.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathDirectory.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/IncrementalImageBuilder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathMultiDirectory.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ImageBuilderInternalException.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/JavaBuilder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/AdditionalTypeCollection.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/BatchImageBuilder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/State.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/BuildNotifier.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ProblemFactory.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathLocation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/AbortIncrementalBuildException.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/MissingClassFileException.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ClasspathJar.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/SourceFile.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/ReferenceCollection.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/WorkQueue.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/MissingSourceFileException.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElement.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/OverflowingLRUCache.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateFieldOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryField.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryMember.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JarPackageFragmentRootInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/eval plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/eval/EvaluationContextWrapper.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/eval/RequestorWrapper.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/eval/GlobalVariableWrapper.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMCompilationUnit.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMMethod.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMBuilder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMImport.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/ILineStartFinder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMMember.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMType.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/SiblingEnumeration.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMNode.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/SimpleDOMBuilder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMField.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMPackage.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/AbstractDOMBuilder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/CompilationUnit.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMInitializer.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceTypeElementInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/MoveElementsOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JarPackageFragmentRoot.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElementInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/OpenableElementInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragment.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMethodElementInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SingleTypeRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SearchableEnvironmentRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnitVisitor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/HandleFactory.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateInitializerOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/IJavaElementRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SortElementsOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateWorkingCopyOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelCache.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/MemberElementInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SearchableEnvironment.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/TypeConverter.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/TypeVector.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SortElementBuilder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreatePackageDeclarationOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ClassFileWorkingCopy.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModel.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CopyElementsOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMapper.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CopyPackageFragmentRootOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateCompilationUnitOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Openable.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/INamingRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ImportContainer.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeleteElementsOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Util.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceFieldElementInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Initializer.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DestroyWorkingCopyOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BatchOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnit.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElementRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeletePackageFragmentRootOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/RenameResourceElementsOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceType.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Buffer.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/MovePackageFragmentRootOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JarEntryFile.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceRefElement.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/LRUCacheEnumerator.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/MultiOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Member.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRootInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/RenameElementsOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/FailedReconciliationException.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelStatus.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BufferCache.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JarPackageFragment.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Assert.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceRange.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SortJavaElement.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompletionRequestorWrapper.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CommitWorkingCopyOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ReconcileWorkingCopyOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BasicCompilationUnit.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ClasspathEntry.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateImportOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeHierarchyOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/messages.properties plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ClassFileInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateMethodOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElementDeltaBuilder.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/IPathRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElementDelta.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRoot.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryType.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SelectionRequestor.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeleteResourceElementsOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ImportDeclaration.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryMethod.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ElementCache.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProjectElementInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMethod.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageDeclaration.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelManager.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetClasspathOperation.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/WorkingCopy.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceField.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JarPackageFragmentInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceRefElementInfo.java plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/InitializerElementInfo.java plugins/org.eclipse.jdt.core/codeassist plugins/org.eclipse.jdt.core/codeassist/org plugins/org.eclipse.jdt.core/codeassist/org/eclipse plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnArgumentName.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnLocalName.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnSuperReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnExplicitConstructorCall.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleTypeReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleNameReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionParser.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldType.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedSuperReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedTypeReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnMessageSend.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedNameReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedAllocationExpression.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionNodeFound.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionScanner.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/select/SelectionOnImportReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedAllocationExpression.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/InvalidCursorLocation.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldName.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnLocalName.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword1.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedInterfaceReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword2.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword3.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedExceptionReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleTypeReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedClassReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSend.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExplicitConstructorCall.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnInterfaceReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleNameReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodReturnType.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionNodeDetector.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionNodeFound.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodName.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExceptionReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldType.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnClassLiteralAccess.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedTypeReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnImportReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnClassReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnArgumentName.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedNameReference.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/Keywords.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/Engine.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistOptions.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/ISearchRequestor.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/ISearchableNameEnvironment.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/RelevanceConstants.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/ISelectionRequestor.java plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/SelectionEngine.java plugins/org.eclipse.jdt.core/scripts plugins/org.eclipse.jdt.core/scripts/export-batch-jdtcom.xml plugins/org.eclipse.jdt.core/scripts/buildExtraJars.xml plugins/org.eclipse.jdt.core/scripts/exportplugin.xml plugins/org.eclipse.jdt.core/about.html plugins/org.eclipse.jdt.core/grammar plugins/org.eclipse.jdt.core/grammar/java_1_4.g plugins/org.eclipse.jdt.core/grammar/java_1_5.g plugins/org.eclipse.jdt.core/eval plugins/org.eclipse.jdt.core/eval/org plugins/org.eclipse.jdt.core/eval/org/eclipse plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetParser.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetMessageSend.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetQualifiedNameReference.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/IRequestor.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetClassFile.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetSkeleton.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetCodeStream.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetScope.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/VariablesInfo.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetFieldReference.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/EvaluationContext.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/GlobalVariable.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetSingleNameReference.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetThisReference.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/VariablesEvaluator.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetCompiler.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetConstantPool.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetEnvironment.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetSuperReference.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/EvaluationResult.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetEvaluator.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetTypeDeclaration.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetAllocationExpression.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/InstallException.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/EvaluationConstants.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetReturnStatement.java plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/Evaluator.java plugins/org.eclipse.jdt.core/antadapter plugins/org.eclipse.jdt.core/antadapter/org plugins/org.eclipse.jdt.core/antadapter/org/eclipse plugins/org.eclipse.jdt.core/antadapter/org/eclipse/jdt plugins/org.eclipse.jdt.core/antadapter/org/eclipse/jdt/core plugins/org.eclipse.jdt.core/antadapter/org/eclipse/jdt/core/JDTCompilerAdapter.java plugins/org.eclipse.jdt.core/build.properties plugins/org.eclipse.jdt.core/batch plugins/org.eclipse.jdt.core/batch/org plugins/org.eclipse.jdt.core/batch/org/eclipse plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/CompilationUnit.java plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/Main.java plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/FileSystem.java plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/FileFinder.java plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathDirectory.java plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJar.java plugins/org.eclipse.jdt.core/plugin.xml plugins/org.eclipse.jdt.core/schema plugins/org.eclipse.jdt.core/schema/classpathVariableInitializer.exsd plugins/org.eclipse.jdt.core/schema/classpathContainerInitializer.exsd plugins/org.eclipse.jdt.core/schema/codeFormatter.exsd plugins/org.eclipse.jdt.core/formatter plugins/org.eclipse.jdt.core/formatter/org plugins/org.eclipse.jdt.core/formatter/org/eclipse plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/options.properties plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/impl plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/impl/FormatterOptions.java plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/impl/SplitLine.java plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/CodeFormatter.java plugins/org.eclipse.jdt.core/notes plugins/org.eclipse.jdt.core/notes/R20_buildnotes_jdt-core.html plugins/org.eclipse.jdt.core/plugin.jars plugins/org.eclipse.jdt.core/.classpath plugins/org.eclipse.jdt.core/plugin.properties plugins/org.eclipse.jdt.core/.project plugins/org.eclipse.jdt.core/.options plugins/org.eclipse.jdt.core/buildnotes_jdt-core.html |