# HG changeset patch # User vromero # Date 1355156486 0 # Node ID fcf89720ae715fd2b66ea705fa26bf0f25d3997a # Parent c78acf6c2f3ed216aa0f1ba94d73a1fd05a1d15d 8003967: detect and remove all mutable implicit static enum fields in langtools Reviewed-by: jjg diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/classfile/Opcode.java --- a/src/share/classes/com/sun/tools/classfile/Opcode.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/classfile/Opcode.java Mon Dec 10 16:21:26 2012 +0000 @@ -448,10 +448,10 @@ } - private static Opcode[] stdOpcodes = new Opcode[256]; - private static Opcode[] wideOpcodes = new Opcode[256]; - private static Opcode[] nonPrivOpcodes = new Opcode[256]; - private static Opcode[] privOpcodes = new Opcode[256]; + private static final Opcode[] stdOpcodes = new Opcode[256]; + private static final Opcode[] wideOpcodes = new Opcode[256]; + private static final Opcode[] nonPrivOpcodes = new Opcode[256]; + private static final Opcode[] privOpcodes = new Opcode[256]; static { for (Opcode o: values()) getOpcodeBlock(o.opcode >> 8)[o.opcode & 0xff] = o; diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DocFileFactory.java --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DocFileFactory.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DocFileFactory.java Mon Dec 10 16:21:26 2012 +0000 @@ -46,7 +46,7 @@ * @since 1.8 */ abstract class DocFileFactory { - private static Map factories = + private static final Map factories = new WeakHashMap(); /** diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/Server.java --- a/src/share/classes/com/sun/tools/javac/Server.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/Server.java Mon Dec 10 16:21:26 2012 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -49,7 +49,7 @@ private final OutputStream out; private final boolean isSocket; private static final JavaCompiler tool = ToolProvider.getSystemJavaCompiler(); - private static Logger logger = Logger.getLogger("com.sun.tools.javac"); + private static final Logger logger = Logger.getLogger("com.sun.tools.javac"); static class CwdFileManager extends ForwardingJavaFileManager { String cwd; CwdFileManager(JavaFileManager fileManager) { @@ -69,7 +69,7 @@ // } } // static CwdFileManager fm = new CwdFileManager(tool.getStandardFileManager()); - static StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null); + static final StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null); static { // Use the same file manager for all compilations. This will // cache jar files in the standard file manager. Use diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/code/Flags.java --- a/src/share/classes/com/sun/tools/javac/code/Flags.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/code/Flags.java Mon Dec 10 16:21:26 2012 +0000 @@ -307,7 +307,7 @@ } // Cache of modifier sets. - private static Map> modifierSets = + private static final Map> modifierSets = new java.util.concurrent.ConcurrentHashMap>(64); public static boolean isStatic(Symbol symbol) { @@ -356,7 +356,7 @@ VARARGS("varargs"), PACKAGE("package"); - String name; + private final String name; Flag(String name) { this.name = name; diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/code/Kinds.java --- a/src/share/classes/com/sun/tools/javac/code/Kinds.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/code/Kinds.java Mon Dec 10 16:21:26 2012 +0000 @@ -110,7 +110,7 @@ INSTANCE_INIT("kindname.instance.init"), PACKAGE("kindname.package"); - private String name; + private final String name; KindName(String name) { this.name = name; diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/code/Lint.java --- a/src/share/classes/com/sun/tools/javac/code/Lint.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/code/Lint.java Mon Dec 10 16:21:26 2012 +0000 @@ -28,11 +28,14 @@ import java.util.EnumSet; import java.util.HashMap; import java.util.Map; +import java.util.Set; +import javax.lang.model.element.Modifier; import com.sun.tools.javac.code.Symbol.*; import com.sun.tools.javac.util.Context; import com.sun.tools.javac.util.List; import com.sun.tools.javac.util.Options; import com.sun.tools.javac.util.Pair; + import static com.sun.tools.javac.code.Flags.*; @@ -95,7 +98,8 @@ private final EnumSet values; private final EnumSet suppressedValues; - private static Map map = new HashMap(); + private static final Map map = + new java.util.concurrent.ConcurrentHashMap(20); protected Lint(Context context) { diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/code/Source.java --- a/src/share/classes/com/sun/tools/javac/code/Source.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/code/Source.java Mon Dec 10 16:21:26 2012 +0000 @@ -87,7 +87,7 @@ public final String name; - private static Map tab = new HashMap(); + private static final Map tab = new HashMap(); static { for (Source s : values()) { tab.put(s.name, s); diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/code/TargetType.java --- a/src/share/classes/com/sun/tools/javac/code/TargetType.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/code/TargetType.java Mon Dec 10 16:21:26 2012 +0000 @@ -166,7 +166,7 @@ static final int MAXIMUM_TARGET_TYPE_VALUE = 0x22; private final int targetTypeValue; - private Set flags; + private final Set flags; TargetType(int targetTypeValue, TargetAttribute... attributes) { if (targetTypeValue < Byte.MIN_VALUE @@ -233,10 +233,10 @@ return this.targetTypeValue; } - private static TargetType[] targets = null; + private static final TargetType[] targets; - private static TargetType[] buildTargets() { - TargetType[] targets = new TargetType[MAXIMUM_TARGET_TYPE_VALUE + 1]; + static { + targets = new TargetType[MAXIMUM_TARGET_TYPE_VALUE + 1]; TargetType[] alltargets = values(); for (TargetType target : alltargets) { if (target.targetTypeValue >= 0) @@ -246,13 +246,9 @@ if (targets[i] == null) targets[i] = UNKNOWN; } - return targets; } public static boolean isValidTargetTypeValue(int tag) { - if (targets == null) - targets = buildTargets(); - if (((byte)tag) == ((byte)UNKNOWN.targetTypeValue)) return true; @@ -260,9 +256,6 @@ } public static TargetType fromTargetTypeValue(int tag) { - if (targets == null) - targets = buildTargets(); - if (((byte)tag) == ((byte)UNKNOWN.targetTypeValue)) return UNKNOWN; diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/code/TypeTag.java --- a/src/share/classes/com/sun/tools/javac/code/TypeTag.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/code/TypeTag.java Mon Dec 10 16:21:26 2012 +0000 @@ -135,9 +135,11 @@ /** This field will only be used for tags related with numeric types for * optimization reasons. */ - private int order = 0; + private final int order; - private TypeTag() {} + private TypeTag() { + this(0); + } private TypeTag(int order) { this.order = order; diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/code/Types.java --- a/src/share/classes/com/sun/tools/javac/code/Types.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/code/Types.java Mon Dec 10 16:21:26 2012 +0000 @@ -2849,7 +2849,7 @@ } return tvars1; } - static private Mapping newInstanceFun = new Mapping("newInstanceFun") { + private static final Mapping newInstanceFun = new Mapping("newInstanceFun") { public Type apply(Type t) { return new TypeVar(t.tsym, t.getUpperBound(), t.getLowerBound()); } }; // diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/comp/ConstFold.java --- a/src/share/classes/com/sun/tools/javac/comp/ConstFold.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/comp/ConstFold.java Mon Dec 10 16:21:26 2012 +0000 @@ -62,9 +62,9 @@ syms = Symtab.instance(context); } - static Integer minusOne = -1; - static Integer zero = 0; - static Integer one = 1; + static final Integer minusOne = -1; + static final Integer zero = 0; + static final Integer one = 1; /** Convert boolean to integer (true = 1, false = 0). */ diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/comp/Flow.java --- a/src/share/classes/com/sun/tools/javac/comp/Flow.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/comp/Flow.java Mon Dec 10 16:21:26 2012 +0000 @@ -246,8 +246,8 @@ */ SPECULATIVE_LOOP("var.might.be.assigned.in.loop", true); - String errKey; - boolean isFinal; + final String errKey; + final boolean isFinal; FlowKind(String errKey, boolean isFinal) { this.errKey = errKey; @@ -295,7 +295,7 @@ } }; - JCTree.Tag treeTag; + final JCTree.Tag treeTag; private JumpKind(Tag treeTag) { this.treeTag = treeTag; diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/comp/Resolve.java --- a/src/share/classes/com/sun/tools/javac/comp/Resolve.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/comp/Resolve.java Mon Dec 10 16:21:26 2012 +0000 @@ -156,7 +156,7 @@ OBJECT_INIT("object-init"), INTERNAL("internal"); - String opt; + final String opt; private VerboseResolutionMode(String opt) { this.opt = opt; @@ -3381,8 +3381,8 @@ } }; - boolean isBoxingRequired; - boolean isVarargsRequired; + final boolean isBoxingRequired; + final boolean isVarargsRequired; MethodResolutionPhase(boolean isBoxingRequired, boolean isVarargsRequired) { this.isBoxingRequired = isBoxingRequired; diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java --- a/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java Mon Dec 10 16:21:26 2012 +0000 @@ -83,7 +83,7 @@ public final static long NOT_MODIFIED = Long.MIN_VALUE; - private static boolean NON_BATCH_MODE = System.getProperty("nonBatchMode") != null;// TODO: Use -XD compiler switch for this. + private static final boolean NON_BATCH_MODE = System.getProperty("nonBatchMode") != null;// TODO: Use -XD compiler switch for this. private Map directories = Collections.emptyMap(); diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/jvm/Code.java --- a/src/share/classes/com/sun/tools/javac/jvm/Code.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/jvm/Code.java Mon Dec 10 16:21:26 2012 +0000 @@ -1825,7 +1825,7 @@ } } - static Type jsrReturnValue = new Type(INT, null); + static final Type jsrReturnValue = new Type(INT, null); /* ************************************************************************** diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/jvm/Target.java --- a/src/share/classes/com/sun/tools/javac/jvm/Target.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/jvm/Target.java Mon Dec 10 16:21:26 2012 +0000 @@ -86,17 +86,15 @@ return instance; } - private static Target MIN; + private static final Target MIN = values()[0]; public static Target MIN() { return MIN; } - private static Target MAX; + private static final Target MAX = values()[values().length - 1]; public static Target MAX() { return MAX; } - private static Map tab = new HashMap(); + private static final Map tab = new HashMap(); static { for (Target t : values()) { - if (MIN == null) MIN = t; - MAX = t; tab.put(t.name, t); } tab.put("5", JDK1_5); diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/main/JavaCompiler.java --- a/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Mon Dec 10 16:21:26 2012 +0000 @@ -189,7 +189,7 @@ } } - private static CompilePolicy DEFAULT_COMPILE_POLICY = CompilePolicy.BY_TODO; + private static final CompilePolicy DEFAULT_COMPILE_POLICY = CompilePolicy.BY_TODO; protected static enum ImplicitSourcePolicy { /** Don't generate or process implicitly read source files. */ @@ -543,7 +543,7 @@ public static CompileState max(CompileState a, CompileState b) { return a.value > b.value ? a : b; } - private int value; + private final int value; }; /** Partial map to record which compiler phases have been executed * for each compilation unit. Used for ATTR and FLOW phases. diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/main/Option.java --- a/src/share/classes/com/sun/tools/javac/main/Option.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/main/Option.java Mon Dec 10 16:21:26 2012 +0000 @@ -167,7 +167,6 @@ ENCODING("-encoding", "opt.arg.encoding", "opt.encoding", STANDARD, FILEMANAGER) { @Override public boolean process(OptionHelper helper, String option, String operand) { -// System.err.println("process encoding " + operand); return super.process(helper, option, operand); } @@ -246,9 +245,7 @@ } }, - A("-A", "opt.arg.key.equals.value", "opt.A", STANDARD, BASIC) { - { hasSuffix = true; } - + A("-A", "opt.arg.key.equals.value", "opt.A", STANDARD, BASIC, true) { @Override public boolean matches(String arg) { return arg.startsWith("-A"); @@ -293,8 +290,6 @@ // This option exists only for the purpose of documenting itself. // It's actually implemented by the launcher. J("-J", "opt.arg.flag", "opt.J", STANDARD, INFO) { - { hasSuffix = true; } - @Override public boolean process(OptionHelper helper, String option) { throw new AssertionError @@ -302,10 +297,6 @@ } }, - // stop after parsing and attributing. - // new HiddenOption("-attrparseonly"), - - // new Option("-moreinfo", "opt.moreinfo") { MOREINFO("-moreinfo", null, HIDDEN, BASIC) { @Override public boolean process(OptionHelper helper, String option) { @@ -317,23 +308,6 @@ // treat warnings as errors WERROR("-Werror", "opt.Werror", STANDARD, BASIC), -// // use complex inference from context in the position of a method call argument -// COMPLEXINFERENCE("-complexinference", null, HIDDEN, BASIC), - - // generare source stubs - // new HiddenOption("-stubs"), - - // relax some constraints to allow compiling from stubs - // new HiddenOption("-relax"), - - // output source after translating away inner classes - // new Option("-printflat", "opt.printflat"), - // new HiddenOption("-printflat"), - - // display scope search details - // new Option("-printsearch", "opt.printsearch"), - // new HiddenOption("-printsearch"), - // prompt after each error // new Option("-prompt", "opt.prompt"), PROMPT("-prompt", null, HIDDEN, BASIC), @@ -342,13 +316,8 @@ DOE("-doe", null, HIDDEN, BASIC), // output source after type erasure - // new Option("-s", "opt.s"), PRINTSOURCE("-printsource", null, HIDDEN, BASIC), - // output shrouded class files - // new Option("-scramble", "opt.scramble"), - // new Option("-scrambleall", "opt.scrambleall"), - // display warnings for generic unchecked operations WARNUNCHECKED("-warnunchecked", null, HIDDEN, BASIC) { @Override @@ -408,18 +377,16 @@ * -XDx sets the option x to the value x. */ XD("-XD", null, HIDDEN, BASIC) { - String s; @Override public boolean matches(String s) { - this.s = s; return s.startsWith(text); } @Override public boolean process(OptionHelper helper, String option) { - s = s.substring(text.length()); - int eq = s.indexOf('='); - String key = (eq < 0) ? s : s.substring(0, eq); - String value = (eq < 0) ? s : s.substring(eq+1); + option = option.substring(text.length()); + int eq = option.indexOf('='); + String key = (eq < 0) ? option : option.substring(0, eq); + String value = (eq < 0) ? option : option.substring(eq+1); helper.put(key, value); return false; } @@ -428,8 +395,6 @@ // This option exists only for the purpose of documenting itself. // It's actually implemented by the CommandLine class. AT("@", "opt.arg.file", "opt.AT", STANDARD, INFO) { - { hasSuffix = true; } - @Override public boolean process(OptionHelper helper, String option) { throw new AssertionError("the @ flag should be caught by CommandLine."); @@ -445,17 +410,15 @@ * name to a separate list. */ SOURCEFILE("sourcefile", null, HIDDEN, INFO) { - String s; @Override public boolean matches(String s) { - this.s = s; return s.endsWith(".java") // Java source file || SourceVersion.isName(s); // Legal type name } @Override public boolean process(OptionHelper helper, String option) { - if (s.endsWith(".java") ) { - File f = new File(s); + if (option.endsWith(".java") ) { + File f = new File(option); if (!f.exists()) { helper.error("err.file.not.found", f); return true; @@ -465,9 +428,9 @@ return true; } helper.addFile(f); + } else { + helper.addClassName(option); } - else - helper.addClassName(s); return false; } }; @@ -521,7 +484,7 @@ /** Suffix option (-foo=bar or -foo:bar) */ - boolean hasSuffix; + final boolean hasSuffix; /** The kind of choices for this option, if any. */ @@ -535,24 +498,30 @@ Option(String text, String descrKey, OptionKind kind, OptionGroup group) { - this(text, null, descrKey, kind, group, null, null); + this(text, null, descrKey, kind, group, null, null, false); } Option(String text, String argsNameKey, String descrKey, OptionKind kind, OptionGroup group) { - this(text, argsNameKey, descrKey, kind, group, null, null); + this(text, argsNameKey, descrKey, kind, group, null, null, false); + } + + Option(String text, String argsNameKey, String descrKey, + OptionKind kind, OptionGroup group, boolean doHasSuffix) { + this(text, argsNameKey, descrKey, kind, group, null, null, doHasSuffix); } Option(String text, String descrKey, OptionKind kind, OptionGroup group, ChoiceKind choiceKind, Map choices) { - this(text, null, descrKey, kind, group, choiceKind, choices); + this(text, null, descrKey, kind, group, choiceKind, choices, false); } Option(String text, String descrKey, OptionKind kind, OptionGroup group, ChoiceKind choiceKind, String... choices) { - this(text, null, descrKey, kind, group, choiceKind, createChoices(choices)); + this(text, null, descrKey, kind, group, choiceKind, + createChoices(choices), false); } // where private static Map createChoices(String... choices) { @@ -564,7 +533,8 @@ private Option(String text, String argsNameKey, String descrKey, OptionKind kind, OptionGroup group, - ChoiceKind choiceKind, Map choices) { + ChoiceKind choiceKind, Map choices, + boolean doHasSuffix) { this.text = text; this.argsNameKey = argsNameKey; this.descrKey = descrKey; @@ -573,7 +543,7 @@ this.choiceKind = choiceKind; this.choices = choices; char lastChar = text.charAt(text.length()-1); - hasSuffix = lastChar == ':' || lastChar == '='; + this.hasSuffix = doHasSuffix || lastChar == ':' || lastChar == '='; } public String getText() { diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java --- a/src/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java Mon Dec 10 16:21:26 2012 +0000 @@ -44,7 +44,7 @@ */ public class JavaTokenizer { - private static boolean scannerDebug = false; + private static final boolean scannerDebug = false; /** Allow hex floating-point literals. */ diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java --- a/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Mon Dec 10 16:21:26 2012 +0000 @@ -1336,7 +1336,7 @@ return nodes; } - private static TreeScanner treeCleaner = new TreeScanner() { + private static final TreeScanner treeCleaner = new TreeScanner() { public void scan(JCTree node) { super.scan(node); if (node != null) diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/tree/JCTree.java --- a/src/share/classes/com/sun/tools/javac/tree/JCTree.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/tree/JCTree.java Mon Dec 10 16:21:26 2012 +0000 @@ -340,15 +340,17 @@ */ LETEXPR; // ala scheme - private Tag noAssignTag; + private final Tag noAssignTag; - private static int numberOfOperators = MOD.ordinal() - POS.ordinal() + 1; + private static final int numberOfOperators = MOD.ordinal() - POS.ordinal() + 1; private Tag(Tag noAssignTag) { this.noAssignTag = noAssignTag; } - private Tag() { } + private Tag() { + this(null); + } public static int getNumberOfOperators() { return numberOfOperators; @@ -1838,8 +1840,8 @@ /** Toplevel # new */ TOPLEVEL(ReferenceMode.NEW, false); - ReferenceMode mode; - boolean unbound; + final ReferenceMode mode; + final boolean unbound; private ReferenceKind(ReferenceMode mode, boolean unbound) { this.mode = mode; diff -r c78acf6c2f3e -r fcf89720ae71 src/share/classes/com/sun/tools/javac/util/BaseFileManager.java --- a/src/share/classes/com/sun/tools/javac/util/BaseFileManager.java Mon Dec 10 12:10:50 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/util/BaseFileManager.java Mon Dec 10 16:21:26 2012 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -181,7 +181,7 @@ return false; } // where - private static Set