EMMA Coverage Report (generated Thu Dec 06 15:24:05 GMT 2007)
[all classes][com.sun.tools.javac.util]

COVERAGE SUMMARY FOR SOURCE FILE [Name.java]

nameclass, %method, %block, %line, %
Name.java100% (2/2)70%  (32/46)71%  (965/1354)73%  (190.5/260)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class Name100% (1/1)53%  (16/30)49%  (373/761)50%  (68.5/137)
append (Name): Name 0%   (0/1)0%   (0/24)0%   (0/4)
charAt (int): char 0%   (0/1)0%   (0/5)0%   (0/1)
compareTo (Name): int 0%   (0/1)0%   (0/6)0%   (0/1)
concat (Name$Table, Name []): Name 0%   (0/1)0%   (0/49)0%   (0/9)
contentEquals (CharSequence): boolean 0%   (0/1)0%   (0/6)0%   (0/1)
endsWith (Name): boolean 0%   (0/1)0%   (0/40)0%   (0/5)
equals (Object): boolean 0%   (0/1)0%   (0/21)0%   (0/3)
fromUtf (Name$Table, byte []): Name 0%   (0/1)0%   (0/7)0%   (0/1)
indexOf (byte): int 0%   (0/1)0%   (0/22)0%   (0/4)
length (): int 0%   (0/1)0%   (0/4)0%   (0/1)
less (Name): boolean 0%   (0/1)0%   (0/49)0%   (0/9)
replace (byte, byte): Name 0%   (0/1)0%   (0/68)0%   (0/16)
startsWith (Name): boolean 0%   (0/1)0%   (0/37)0%   (0/4)
subSequence (int, int): CharSequence 0%   (0/1)0%   (0/6)0%   (0/1)
isEmpty (): boolean 100% (1/1)71%  (5/7)71%  (0.7/1)
fromUtf (Name$Table, byte [], int, int): Name 100% (1/1)79%  (85/107)81%  (17.9/22)
fromChars (Name$Table, char [], int, int): Name 100% (1/1)83%  (93/112)82%  (18/22)
equals (byte [], int, byte [], int, int): boolean 100% (1/1)96%  (24/25)95%  (2.8/3)
Name (): void 100% (1/1)100% (3/3)100% (2/2)
append (char, Name): Name 100% (1/1)100% (34/34)100% (5/5)
byteAt (int): byte 100% (1/1)100% (9/9)100% (1/1)
fromString (Name$Table, CharSequence): Name 100% (1/1)100% (5/5)100% (1/1)
fromString (Name$Table, String): Name 100% (1/1)100% (10/10)100% (2/2)
getBytes (byte [], int): void 100% (1/1)100% (11/11)100% (2/2)
hashCode (): int 100% (1/1)100% (3/3)100% (1/1)
hashValue (byte [], int, int): int 100% (1/1)100% (24/24)100% (5/5)
lastIndexOf (byte): int 100% (1/1)100% (23/23)100% (4/4)
subName (int, int): Name 100% (1/1)100% (19/19)100% (2/2)
toString (): String 100% (1/1)100% (9/9)100% (1/1)
toUtf (): byte [] 100% (1/1)100% (16/16)100% (3/3)
     
class Name$Table100% (1/1)100% (16/16)100% (592/593)99%  (123/124)
make (): Name$Table 100% (1/1)95%  (20/21)83%  (5/6)
<static initializer> 100% (1/1)100% (7/7)100% (2/2)
Name$Table (): void 100% (1/1)100% (5/5)100% (2/2)
Name$Table (int, int): void 100% (1/1)100% (489/489)100% (100/100)
access$000 (Name$Table): int 100% (1/1)100% (3/3)100% (1/1)
access$100 (Name$Table): Name [] 100% (1/1)100% (3/3)100% (1/1)
access$200 (Name$Table): int 100% (1/1)100% (3/3)100% (1/1)
access$202 (Name$Table, int): int 100% (1/1)100% (5/5)100% (1/1)
access$208 (Name$Table): int 100% (1/1)100% (8/8)100% (1/1)
dispose (): void 100% (1/1)100% (3/3)100% (2/2)
dispose (Name$Table): void 100% (1/1)100% (8/8)100% (2/2)
fromChars (char [], int, int): Name 100% (1/1)100% (6/6)100% (1/1)
fromString (CharSequence): Name 100% (1/1)100% (4/4)100% (1/1)
fromUtf (byte []): Name 100% (1/1)100% (7/7)100% (1/1)
fromUtf (byte [], int, int): Name 100% (1/1)100% (6/6)100% (1/1)
instance (Context): Name$Table 100% (1/1)100% (15/15)100% (5/5)

1/*
2 * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25 
26package com.sun.tools.javac.util;
27 
28import java.lang.ref.SoftReference;
29 
30 
31/** An abstraction for internal compiler strings. For efficiency reasons,
32 *  GJC uses hashed strings that are stored in a common large buffer.
33 *
34 *  <p>Names represent unique hashable strings. Two names are equal
35 *  if their indices are equal. Utf8 representation is used
36 *  for storing names internally.
37 *
38 *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
39 *  you write code that depends on this, you do so at your own risk.
40 *  This code and its internal interfaces are subject to change or
41 *  deletion without notice.</b>
42 */
43public class Name implements javax.lang.model.element.Name {
44 
45    /** The table structure where the name is stored
46     */
47    public Table table;
48 
49    /** The index where the bytes of this name are stored in the global name
50     *  buffer `names'.
51     */
52    public int index;
53 
54    /** The number of bytes in this name.
55     */
56    public int len;
57 
58    /** The next name occupying the same hash bucket.
59     */
60    Name next;
61 
62    /** The hashcode of a name.
63     */
64    private static int hashValue(byte cs[], int start, int len) {
65        int h = 0;
66        int off = start;
67 
68        for (int i = 0; i < len; i++) {
69            h = (h << 5) - h + cs[off++];
70        }
71        return h;
72    }
73 
74    /** Is (the utf8 representation of) name equal to
75     *  cs[start..start+len-1]?
76     */
77    private static boolean equals(byte[] names, int index,
78                                  byte cs[], int start, int len) {
79        int i = 0;
80        while (i < len && names[index + i] == cs[start + i]) i++;
81        return i == len;
82    }
83 
84    /** Create a name from the bytes in cs[start..start+len-1].
85     *  Assume that bytes are in utf8 format.
86     */
87    public static Name fromUtf(Table table, byte cs[], int start, int len) {
88        int h = hashValue(cs, start, len) & table.hashMask;
89        Name n = table.hashes[h];
90        byte[] names = table.names;
91        while (n != null &&
92               (n.len != len || !equals(names, n.index, cs, start, len)))
93            n = n.next;
94        if (n == null) {
95            int nc = table.nc;
96            while (nc + len > names.length) {
97//              System.err.println("doubling name buffer of length + " + names.length + " to fit " + len + " bytes");//DEBUG
98                byte[] newnames = new byte[names.length * 2];
99                System.arraycopy(names, 0, newnames, 0, names.length);
100                names = table.names = newnames;
101            }
102            System.arraycopy(cs, start, names, nc, len);
103            n = new Name();
104            n.table = table;
105            n.index = nc;
106            n.len = len;
107            n.next = table.hashes[h];
108            table.hashes[h] = n;
109            table.nc = nc + len;
110            if (len == 0) table.nc++;
111        }
112        return n;
113    }
114 
115    /** Create a name from the bytes in array cs.
116     *  Assume that bytes are in utf8 format.
117     */
118    public static Name fromUtf(Table table, byte cs[]) {
119        return fromUtf(table, cs, 0, cs.length);
120    }
121 
122    /** Create a name from the characters in cs[start..start+len-1].
123     */
124    public static Name fromChars(Table table, char[] cs, int start, int len) {
125        int nc = table.nc;
126        byte[] names = table.names;
127        while (nc + len * 3 >= names.length) {
128//          System.err.println("doubling name buffer of length " + names.length + " to fit " + len + " chars");//DEBUG
129            byte[] newnames = new byte[names.length * 2];
130            System.arraycopy(names, 0, newnames, 0, names.length);
131            names = table.names = newnames;
132        }
133        int nbytes =
134            Convert.chars2utf(cs, start, names, nc, len) - nc;
135        int h = hashValue(names, nc, nbytes) & table.hashMask;
136        Name n = table.hashes[h];
137        while (n != null &&
138               (n.len != nbytes ||
139                !equals(names, n.index, names, nc, nbytes)))
140            n = n.next;
141        if (n == null) {
142            n = new Name();
143            n.table = table;
144            n.index = nc;
145            n.len = nbytes;
146            n.next = table.hashes[h];
147            table.hashes[h] = n;
148            table.nc = nc + nbytes;
149            if (nbytes == 0) table.nc++;
150        }
151        return n;
152    }
153 
154    /** Create a name from the characters in string s.
155     */
156    public static Name fromString(Table table, String s) {
157        char[] cs = s.toCharArray();
158        return fromChars(table, cs, 0, cs.length);
159    }
160 
161    /** Create a name from the characters in char sequence s.
162     */
163    public static Name fromString(Table table, CharSequence s) {
164        return fromString(table, s.toString());
165    }
166 
167    /** Return the Utf8 representation of this name.
168     */
169    public byte[] toUtf() {
170        byte[] bs = new byte[len];
171        System.arraycopy(table.names, index, bs, 0, len);
172        return bs;
173    }
174 
175    /** Return the string representation of this name.
176     */
177    public String toString() {
178        return Convert.utf2string(table.names, index, len);
179    }
180 
181    /** Copy all bytes of this name to buffer cs, starting at start.
182     */
183    public void getBytes(byte cs[], int start) {
184        System.arraycopy(table.names, index, cs, start, len);
185    }
186 
187    /** Return the hash value of this name.
188     */
189    public int hashCode() {
190        return index;
191    }
192 
193    /** Is this name equal to other?
194     */
195    public boolean equals(Object other) {
196        if (other instanceof Name)
197            return
198                table == ((Name)other).table && index == ((Name)other).index;
199        else return false;
200    }
201 
202    /** Compare this name to other name, yielding -1 if smaller, 0 if equal,
203     *  1 if greater.
204     */
205    public boolean less(Name that) {
206        int i = 0;
207        while (i < this.len && i < that.len) {
208            byte thisb = this.table.names[this.index + i];
209            byte thatb = that.table.names[that.index + i];
210            if (thisb < thatb) return true;
211            else if (thisb > thatb) return false;
212            else i++;
213        }
214        return this.len < that.len;
215    }
216 
217    /** Returns the length of this name.
218     */
219    public int length() {
220        return toString().length();
221    }
222 
223    /** Returns i'th byte of this name.
224     */
225    public byte byteAt(int i) {
226        return table.names[index + i];
227    }
228 
229    /** Returns first occurrence of byte b in this name, len if not found.
230     */
231    public int indexOf(byte b) {
232        byte[] names = table.names;
233        int i = 0;
234        while (i < len && names[index + i] != b) i++;
235        return i;
236    }
237 
238    /** Returns last occurrence of byte b in this name, -1 if not found.
239     */
240    public int lastIndexOf(byte b) {
241        byte[] names = table.names;
242        int i = len - 1;
243        while (i >= 0 && names[index + i] != b) i--;
244        return i;
245    }
246 
247    /** Does this name start with prefix?
248     */
249    public boolean startsWith(Name prefix) {
250        int i = 0;
251        while (i < prefix.len &&
252               i < len &&
253               table.names[index + i] == prefix.table.names[prefix.index + i])
254            i++;
255        return i == prefix.len;
256    }
257 
258    /** Does this name end with suffix?
259     */
260    public boolean endsWith(Name suffix) {
261        int i = len - 1;
262        int j = suffix.len - 1;
263        while (j >= 0 && i >= 0 &&
264               table.names[index + i] == suffix.table.names[suffix.index + j]) {
265            i--; j--;
266        }
267        return j < 0;
268    }
269 
270    /** Returns the sub-name starting at position start, up to and
271     *  excluding position end.
272     */
273    public Name subName(int start, int end) {
274        if (end < start) end = start;
275        return fromUtf(table, table.names, index + start, end - start);
276    }
277 
278    /** Replace all `from' bytes in this name with `to' bytes.
279     */
280    public Name replace(byte from, byte to) {
281        byte[] names = table.names;
282        int i = 0;
283        while (i < len) {
284            if (names[index + i] == from) {
285                byte[] bs = new byte[len];
286                System.arraycopy(names, index, bs, 0, i);
287                bs[i] = to;
288                i++;
289                while (i < len) {
290                    byte b = names[index + i];
291                    bs[i] = b == from ? to : b;
292                    i++;
293                }
294                return fromUtf(table, bs, 0, len);
295            }
296            i++;
297        }
298        return this;
299    }
300 
301    /** Return the concatenation of this name and name `n'.
302     */
303    public Name append(Name n) {
304        byte[] bs = new byte[len + n.len];
305        getBytes(bs, 0);
306        n.getBytes(bs, len);
307        return fromUtf(table, bs, 0, bs.length);
308    }
309 
310    /** Return the concatenation of this name, the given ASCII
311     *  character, and name `n'.
312     */
313    public Name append(char c, Name n) {
314        byte[] bs = new byte[len + n.len + 1];
315        getBytes(bs, 0);
316        bs[len] = (byte)c;
317        n.getBytes(bs, len+1);
318        return fromUtf(table, bs, 0, bs.length);
319    }
320 
321    /** An arbitrary but consistent complete order among all Names.
322     */
323    public int compareTo(Name other) {
324        return other.index - this.index;
325    }
326 
327    /** Return the concatenation of all names in the array `ns'.
328     */
329    public static Name concat(Table table, Name ns[]) {
330        int len = 0;
331        for (int i = 0; i < ns.length; i++)
332            len = len + ns[i].len;
333        byte[] bs = new byte[len];
334        len = 0;
335        for (int i = 0; i < ns.length; i++) {
336            ns[i].getBytes(bs, len);
337            len = len + ns[i].len;
338        }
339        return fromUtf(table, bs, 0, len);
340    }
341 
342    public char charAt(int index) {
343        return toString().charAt(index);
344    }
345 
346    public CharSequence subSequence(int start, int end) {
347        return toString().subSequence(start, end);
348    }
349 
350    public boolean contentEquals(CharSequence cs) {
351        return this.toString().equals(cs.toString());
352    }
353 
354    public static class Table {
355        // maintain a freelist of recently used name tables for reuse.
356        private static List<SoftReference<Table>> freelist = List.nil();
357 
358        static private synchronized Table make() {
359            while (freelist.nonEmpty()) {
360                Table t = freelist.head.get();
361                freelist = freelist.tail;
362                if (t != null) return t;
363            }
364            return new Table();
365        }
366 
367        static private synchronized void dispose(Table t) {
368            freelist = freelist.prepend(new SoftReference<Table>(t));
369        }
370 
371        public void dispose() {
372            dispose(this);
373        }
374 
375        public static final Context.Key<Table> namesKey =
376            new Context.Key<Table>();
377 
378        public static Table instance(Context context) {
379            Table instance = context.get(namesKey);
380            if (instance == null) {
381                instance = make();
382                context.put(namesKey, instance);
383            }
384            return instance;
385        }
386 
387        /** The hash table for names.
388         */
389        private Name[] hashes;
390 
391        /** The array holding all encountered names.
392         */
393        public byte[] names;
394 
395        /** The mask to be used for hashing
396         */
397        private int hashMask;
398 
399        /** The number of filled bytes in `names'.
400         */
401        private int nc = 0;
402 
403        /** Allocator
404         *  @param hashSize the (constant) size to be used for the hash table
405         *                  needs to be a power of two.
406         *  @param nameSize the initial size of the name table.
407         */
408        public Table(int hashSize, int nameSize) {
409            hashMask = hashSize - 1;
410            hashes = new Name[hashSize];
411            names = new byte[nameSize];
412 
413            slash = fromString("/");
414            hyphen = fromString("-");
415            T = fromString("T");
416            slashequals = fromString("/=");
417            deprecated = fromString("deprecated");
418 
419            init = fromString("<init>");
420            clinit = fromString("<clinit>");
421            error = fromString("<error>");
422            any = fromString("<any>");
423            empty = fromString("");
424            one = fromString("1");
425            period = fromString(".");
426            comma = fromString(",");
427            semicolon = fromString(";");
428            asterisk = fromString("*");
429            _this = fromString("this");
430            _super = fromString("super");
431            _default = fromString("default");
432 
433            _class = fromString("class");
434            java_lang = fromString("java.lang");
435            java_lang_Object = fromString("java.lang.Object");
436            java_lang_Class = fromString("java.lang.Class");
437            java_lang_Cloneable = fromString("java.lang.Cloneable");
438            java_io_Serializable = fromString("java.io.Serializable");
439            java_lang_Enum = fromString("java.lang.Enum");
440            package_info = fromString("package-info");
441            serialVersionUID = fromString("serialVersionUID");
442            ConstantValue = fromString("ConstantValue");
443            LineNumberTable = fromString("LineNumberTable");
444            LocalVariableTable = fromString("LocalVariableTable");
445            LocalVariableTypeTable = fromString("LocalVariableTypeTable");
446            CharacterRangeTable = fromString("CharacterRangeTable");
447            StackMap = fromString("StackMap");
448            StackMapTable = fromString("StackMapTable");
449            SourceID = fromString("SourceID");
450            CompilationID = fromString("CompilationID");
451            Code = fromString("Code");
452            Exceptions = fromString("Exceptions");
453            SourceFile = fromString("SourceFile");
454            InnerClasses = fromString("InnerClasses");
455            Synthetic = fromString("Synthetic");
456            Bridge= fromString("Bridge");
457            Deprecated = fromString("Deprecated");
458            Enum = fromString("Enum");
459            _name = fromString("name");
460            Signature = fromString("Signature");
461            Varargs = fromString("Varargs");
462            Annotation = fromString("Annotation");
463            RuntimeVisibleAnnotations = fromString("RuntimeVisibleAnnotations");
464            RuntimeInvisibleAnnotations = fromString("RuntimeInvisibleAnnotations");
465            RuntimeVisibleParameterAnnotations = fromString("RuntimeVisibleParameterAnnotations");
466            RuntimeInvisibleParameterAnnotations = fromString("RuntimeInvisibleParameterAnnotations");
467            Value = fromString("Value");
468            EnclosingMethod = fromString("EnclosingMethod");
469 
470            desiredAssertionStatus = fromString("desiredAssertionStatus");
471 
472            append  = fromString("append");
473            family  = fromString("family");
474            forName = fromString("forName");
475            toString = fromString("toString");
476            length = fromString("length");
477            valueOf = fromString("valueOf");
478            value = fromString("value");
479            getMessage = fromString("getMessage");
480            getClass = fromString("getClass");
481 
482            TYPE = fromString("TYPE");
483            FIELD = fromString("FIELD");
484            METHOD = fromString("METHOD");
485            PARAMETER = fromString("PARAMETER");
486            CONSTRUCTOR = fromString("CONSTRUCTOR");
487            LOCAL_VARIABLE = fromString("LOCAL_VARIABLE");
488            ANNOTATION_TYPE = fromString("ANNOTATION_TYPE");
489            PACKAGE = fromString("PACKAGE");
490 
491            SOURCE = fromString("SOURCE");
492            CLASS = fromString("CLASS");
493            RUNTIME = fromString("RUNTIME");
494 
495            Array = fromString("Array");
496            Method = fromString("Method");
497            Bound = fromString("Bound");
498            clone = fromString("clone");
499            getComponentType = fromString("getComponentType");
500            getClassLoader = fromString("getClassLoader");
501            initCause = fromString("initCause");
502            values = fromString("values");
503            iterator = fromString("iterator");
504            hasNext = fromString("hasNext");
505            next = fromString("next");
506            AnnotationDefault = fromString("AnnotationDefault");
507            ordinal = fromString("ordinal");
508            equals = fromString("equals");
509            hashCode = fromString("hashCode");
510            compareTo = fromString("compareTo");
511            getDeclaringClass = fromString("getDeclaringClass");
512            ex = fromString("ex");
513            finalize = fromString("finalize");
514        }
515 
516        public Table() {
517            this(0x8000, 0x20000);
518        }
519 
520        /** Create a name from the bytes in cs[start..start+len-1].
521         *  Assume that bytes are in utf8 format.
522         */
523        public Name fromUtf(byte cs[], int start, int len) {
524            return Name.fromUtf(this, cs, start, len);
525        }
526 
527        /** Create a name from the bytes in array cs.
528         *  Assume that bytes are in utf8 format.
529         */
530        public Name fromUtf(byte cs[]) {
531            return Name.fromUtf(this, cs, 0, cs.length);
532        }
533 
534        /** Create a name from the characters in cs[start..start+len-1].
535         */
536        public Name fromChars(char[] cs, int start, int len) {
537            return Name.fromChars(this, cs, start, len);
538        }
539 
540        /** Create a name from the characters in string s.
541         */
542        public Name fromString(CharSequence s) {
543            return Name.fromString(this, s);
544        }
545 
546        public final Name slash;
547        public final Name hyphen;
548        public final Name T;
549        public final Name slashequals;
550        public final Name deprecated;
551 
552        public final Name init;
553        public final Name clinit;
554        public final Name error;
555        public final Name any;
556        public final Name empty;
557        public final Name one;
558        public final Name period;
559        public final Name comma;
560        public final Name semicolon;
561        public final Name asterisk;
562        public final Name _this;
563        public final Name _super;
564        public final Name _default;
565 
566        public final Name _class;
567        public final Name java_lang;
568        public final Name java_lang_Object;
569        public final Name java_lang_Class;
570        public final Name java_lang_Cloneable;
571        public final Name java_io_Serializable;
572        public final Name serialVersionUID;
573        public final Name java_lang_Enum;
574        public final Name package_info;
575        public final Name ConstantValue;
576        public final Name LineNumberTable;
577        public final Name LocalVariableTable;
578        public final Name LocalVariableTypeTable;
579        public final Name CharacterRangeTable;
580        public final Name StackMap;
581        public final Name StackMapTable;
582        public final Name SourceID;
583        public final Name CompilationID;
584        public final Name Code;
585        public final Name Exceptions;
586        public final Name SourceFile;
587        public final Name InnerClasses;
588        public final Name Synthetic;
589        public final Name Bridge;
590        public final Name Deprecated;
591        public final Name Enum;
592        public final Name _name;
593        public final Name Signature;
594        public final Name Varargs;
595        public final Name Annotation;
596        public final Name RuntimeVisibleAnnotations;
597        public final Name RuntimeInvisibleAnnotations;
598        public final Name RuntimeVisibleParameterAnnotations;
599        public final Name RuntimeInvisibleParameterAnnotations;
600 
601        public final Name Value;
602        public final Name EnclosingMethod;
603 
604        public final Name desiredAssertionStatus;
605 
606        public final Name append;
607        public final Name family;
608        public final Name forName;
609        public final Name toString;
610        public final Name length;
611        public final Name valueOf;
612        public final Name value;
613        public final Name getMessage;
614        public final Name getClass;
615 
616        public final Name TYPE;
617        public final Name FIELD;
618        public final Name METHOD;
619        public final Name PARAMETER;
620        public final Name CONSTRUCTOR;
621        public final Name LOCAL_VARIABLE;
622        public final Name ANNOTATION_TYPE;
623        public final Name PACKAGE;
624 
625        public final Name SOURCE;
626        public final Name CLASS;
627        public final Name RUNTIME;
628 
629        public final Name Array;
630        public final Name Method;
631        public final Name Bound;
632        public final Name clone;
633        public final Name getComponentType;
634        public final Name getClassLoader;
635        public final Name initCause;
636        public final Name values;
637        public final Name iterator;
638        public final Name hasNext;
639        public final Name next;
640        public final Name AnnotationDefault;
641        public final Name ordinal;
642        public final Name equals;
643        public final Name hashCode;
644        public final Name compareTo;
645        public final Name getDeclaringClass;
646        public final Name ex;
647        public final Name finalize;
648    }
649 
650    public boolean isEmpty() {
651        return len == 0;
652    }
653}

[all classes][com.sun.tools.javac.util]
EMMA 2.0.5312 (C) Vladimir Roubtsov