View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   https://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  
20  package org.apache.bcel;
21  
22  import java.io.BufferedInputStream;
23  import java.io.BufferedOutputStream;
24  import java.io.BufferedReader;
25  import java.io.BufferedWriter;
26  import java.io.ByteArrayInputStream;
27  import java.io.ByteArrayOutputStream;
28  import java.io.CharArrayReader;
29  import java.io.CharArrayWriter;
30  import java.io.CharConversionException;
31  import java.io.Closeable;
32  import java.io.Console;
33  import java.io.DataInput;
34  import java.io.DataInputStream;
35  import java.io.DataOutput;
36  import java.io.DataOutputStream;
37  import java.io.EOFException;
38  import java.io.Externalizable;
39  import java.io.File;
40  import java.io.FileDescriptor;
41  import java.io.FileFilter;
42  import java.io.FileInputStream;
43  import java.io.FileNotFoundException;
44  import java.io.FileOutputStream;
45  import java.io.FilePermission;
46  import java.io.FileReader;
47  import java.io.FileWriter;
48  import java.io.FilenameFilter;
49  import java.io.FilterInputStream;
50  import java.io.FilterOutputStream;
51  import java.io.FilterReader;
52  import java.io.FilterWriter;
53  import java.io.Flushable;
54  import java.io.IOException;
55  import java.io.InputStream;
56  import java.io.InputStreamReader;
57  import java.io.InterruptedIOException;
58  import java.io.InvalidClassException;
59  import java.io.InvalidObjectException;
60  import java.io.LineNumberReader;
61  import java.io.NotActiveException;
62  import java.io.NotSerializableException;
63  import java.io.ObjectInput;
64  import java.io.ObjectInputStream;
65  import java.io.ObjectInputValidation;
66  import java.io.ObjectOutput;
67  import java.io.ObjectOutputStream;
68  import java.io.ObjectStreamClass;
69  import java.io.ObjectStreamException;
70  import java.io.ObjectStreamField;
71  import java.io.OptionalDataException;
72  import java.io.OutputStream;
73  import java.io.OutputStreamWriter;
74  import java.io.PipedInputStream;
75  import java.io.PipedOutputStream;
76  import java.io.PipedReader;
77  import java.io.PipedWriter;
78  import java.io.PrintStream;
79  import java.io.PrintWriter;
80  import java.io.PushbackInputStream;
81  import java.io.PushbackReader;
82  import java.io.RandomAccessFile;
83  import java.io.Reader;
84  import java.io.SequenceInputStream;
85  import java.io.Serializable;
86  import java.io.SerializablePermission;
87  import java.io.StreamCorruptedException;
88  import java.io.StreamTokenizer;
89  import java.io.StringReader;
90  import java.io.StringWriter;
91  import java.io.SyncFailedException;
92  import java.io.UTFDataFormatException;
93  import java.io.UncheckedIOException;
94  import java.io.UnsupportedEncodingException;
95  import java.io.WriteAbortedException;
96  import java.io.Writer;
97  import java.lang.annotation.Annotation;
98  import java.lang.annotation.AnnotationFormatError;
99  import java.lang.annotation.AnnotationTypeMismatchException;
100 import java.lang.annotation.Documented;
101 import java.lang.annotation.IncompleteAnnotationException;
102 import java.lang.annotation.Inherited;
103 import java.lang.annotation.Native;
104 import java.lang.annotation.Repeatable;
105 import java.lang.annotation.Retention;
106 import java.lang.annotation.Target;
107 import java.lang.invoke.CallSite;
108 import java.lang.invoke.ConstantCallSite;
109 import java.lang.invoke.LambdaMetafactory;
110 import java.lang.invoke.MethodHandle;
111 import java.lang.invoke.MethodHandleInfo;
112 import java.lang.invoke.MethodHandles;
113 import java.lang.invoke.MethodType;
114 import java.lang.invoke.MutableCallSite;
115 import java.lang.invoke.SwitchPoint;
116 import java.lang.invoke.VolatileCallSite;
117 import java.lang.invoke.WrongMethodTypeException;
118 import java.lang.ref.PhantomReference;
119 import java.lang.ref.Reference;
120 import java.lang.ref.ReferenceQueue;
121 import java.lang.ref.SoftReference;
122 import java.lang.ref.WeakReference;
123 import java.lang.reflect.AccessibleObject;
124 import java.lang.reflect.AnnotatedArrayType;
125 import java.lang.reflect.AnnotatedElement;
126 import java.lang.reflect.AnnotatedParameterizedType;
127 import java.lang.reflect.AnnotatedType;
128 import java.lang.reflect.AnnotatedTypeVariable;
129 import java.lang.reflect.AnnotatedWildcardType;
130 import java.lang.reflect.Array;
131 import java.lang.reflect.Constructor;
132 import java.lang.reflect.Executable;
133 import java.lang.reflect.Field;
134 import java.lang.reflect.GenericArrayType;
135 import java.lang.reflect.GenericDeclaration;
136 import java.lang.reflect.InvocationHandler;
137 import java.lang.reflect.InvocationTargetException;
138 import java.lang.reflect.MalformedParameterizedTypeException;
139 import java.lang.reflect.Member;
140 import java.lang.reflect.Method;
141 import java.lang.reflect.Modifier;
142 import java.lang.reflect.Parameter;
143 import java.lang.reflect.ParameterizedType;
144 import java.lang.reflect.Proxy;
145 import java.lang.reflect.ReflectPermission;
146 import java.lang.reflect.Type;
147 import java.lang.reflect.TypeVariable;
148 import java.lang.reflect.UndeclaredThrowableException;
149 import java.lang.reflect.WildcardType;
150 import java.math.BigDecimal;
151 import java.math.BigInteger;
152 import java.math.MathContext;
153 import java.math.RoundingMode;
154 import java.net.Authenticator;
155 import java.net.BindException;
156 import java.net.CacheRequest;
157 import java.net.CacheResponse;
158 import java.net.ConnectException;
159 import java.net.ContentHandler;
160 import java.net.CookieHandler;
161 import java.net.CookieManager;
162 import java.net.CookiePolicy;
163 import java.net.CookieStore;
164 import java.net.DatagramPacket;
165 import java.net.DatagramSocket;
166 import java.net.DatagramSocketImpl;
167 import java.net.FileNameMap;
168 import java.net.HttpCookie;
169 import java.net.HttpRetryException;
170 import java.net.HttpURLConnection;
171 import java.net.IDN;
172 import java.net.Inet4Address;
173 import java.net.Inet6Address;
174 import java.net.InetAddress;
175 import java.net.InetSocketAddress;
176 import java.net.InterfaceAddress;
177 import java.net.JarURLConnection;
178 import java.net.MalformedURLException;
179 import java.net.MulticastSocket;
180 import java.net.NetPermission;
181 import java.net.NetworkInterface;
182 import java.net.NoRouteToHostException;
183 import java.net.PasswordAuthentication;
184 import java.net.PortUnreachableException;
185 import java.net.ProtocolException;
186 import java.net.ProxySelector;
187 import java.net.ResponseCache;
188 import java.net.SecureCacheResponse;
189 import java.net.ServerSocket;
190 import java.net.Socket;
191 import java.net.SocketAddress;
192 import java.net.SocketException;
193 import java.net.SocketImpl;
194 import java.net.SocketOption;
195 import java.net.SocketOptions;
196 import java.net.SocketPermission;
197 import java.net.SocketTimeoutException;
198 import java.net.StandardProtocolFamily;
199 import java.net.StandardSocketOptions;
200 import java.net.URI;
201 import java.net.URISyntaxException;
202 import java.net.URL;
203 import java.net.URLClassLoader;
204 import java.net.URLConnection;
205 import java.net.URLDecoder;
206 import java.net.URLEncoder;
207 import java.net.URLStreamHandler;
208 import java.net.UnknownHostException;
209 import java.net.UnknownServiceException;
210 import java.nio.Buffer;
211 import java.nio.BufferOverflowException;
212 import java.nio.BufferUnderflowException;
213 import java.nio.ByteBuffer;
214 import java.nio.ByteOrder;
215 import java.nio.CharBuffer;
216 import java.nio.DoubleBuffer;
217 import java.nio.FloatBuffer;
218 import java.nio.IntBuffer;
219 import java.nio.InvalidMarkException;
220 import java.nio.LongBuffer;
221 import java.nio.MappedByteBuffer;
222 import java.nio.ReadOnlyBufferException;
223 import java.nio.ShortBuffer;
224 import java.nio.charset.CharacterCodingException;
225 import java.nio.charset.Charset;
226 import java.nio.charset.CharsetDecoder;
227 import java.nio.charset.CharsetEncoder;
228 import java.nio.charset.CoderResult;
229 import java.nio.charset.CodingErrorAction;
230 import java.nio.charset.IllegalCharsetNameException;
231 import java.nio.charset.MalformedInputException;
232 import java.nio.charset.StandardCharsets;
233 import java.nio.charset.UnmappableCharacterException;
234 import java.nio.charset.UnsupportedCharsetException;
235 import java.nio.file.AccessDeniedException;
236 import java.nio.file.AtomicMoveNotSupportedException;
237 import java.nio.file.ClosedDirectoryStreamException;
238 import java.nio.file.ClosedFileSystemException;
239 import java.nio.file.ClosedWatchServiceException;
240 import java.nio.file.DirectoryIteratorException;
241 import java.nio.file.DirectoryNotEmptyException;
242 import java.nio.file.DirectoryStream;
243 import java.nio.file.FileAlreadyExistsException;
244 import java.nio.file.FileSystem;
245 import java.nio.file.FileSystemException;
246 import java.nio.file.FileSystemLoopException;
247 import java.nio.file.FileSystemNotFoundException;
248 import java.nio.file.FileSystems;
249 import java.nio.file.FileVisitOption;
250 import java.nio.file.FileVisitResult;
251 import java.nio.file.FileVisitor;
252 import java.nio.file.Files;
253 import java.nio.file.InvalidPathException;
254 import java.nio.file.LinkOption;
255 import java.nio.file.NoSuchFileException;
256 import java.nio.file.NotDirectoryException;
257 import java.nio.file.NotLinkException;
258 import java.nio.file.OpenOption;
259 import java.nio.file.Path;
260 import java.nio.file.PathMatcher;
261 import java.nio.file.Paths;
262 import java.nio.file.ProviderMismatchException;
263 import java.nio.file.ProviderNotFoundException;
264 import java.nio.file.ReadOnlyFileSystemException;
265 import java.nio.file.SimpleFileVisitor;
266 import java.nio.file.StandardCopyOption;
267 import java.nio.file.StandardOpenOption;
268 import java.nio.file.StandardWatchEventKinds;
269 import java.nio.file.WatchEvent;
270 import java.nio.file.WatchKey;
271 import java.nio.file.WatchService;
272 import java.nio.file.Watchable;
273 import java.nio.file.attribute.AclEntry;
274 import java.nio.file.attribute.AclEntryFlag;
275 import java.nio.file.attribute.AclEntryPermission;
276 import java.nio.file.attribute.AclEntryType;
277 import java.nio.file.attribute.AclFileAttributeView;
278 import java.nio.file.attribute.AttributeView;
279 import java.nio.file.attribute.BasicFileAttributeView;
280 import java.nio.file.attribute.BasicFileAttributes;
281 import java.nio.file.attribute.DosFileAttributeView;
282 import java.nio.file.attribute.DosFileAttributes;
283 import java.nio.file.attribute.FileAttribute;
284 import java.nio.file.attribute.FileAttributeView;
285 import java.nio.file.attribute.FileOwnerAttributeView;
286 import java.nio.file.attribute.FileStoreAttributeView;
287 import java.nio.file.attribute.FileTime;
288 import java.nio.file.attribute.GroupPrincipal;
289 import java.nio.file.attribute.PosixFileAttributeView;
290 import java.nio.file.attribute.PosixFileAttributes;
291 import java.nio.file.attribute.PosixFilePermission;
292 import java.nio.file.attribute.PosixFilePermissions;
293 import java.nio.file.attribute.UserDefinedFileAttributeView;
294 import java.nio.file.attribute.UserPrincipal;
295 import java.nio.file.attribute.UserPrincipalLookupService;
296 import java.nio.file.attribute.UserPrincipalNotFoundException;
297 import java.security.AccessControlContext;
298 import java.security.AccessControlException;
299 import java.security.AccessController;
300 import java.security.AlgorithmParameterGenerator;
301 import java.security.AlgorithmParameters;
302 import java.security.AlgorithmParametersSpi;
303 import java.security.AllPermission;
304 import java.security.AuthProvider;
305 import java.security.BasicPermission;
306 import java.security.Certificate;
307 import java.security.CodeSigner;
308 import java.security.CodeSource;
309 import java.security.DigestException;
310 import java.security.DigestInputStream;
311 import java.security.DigestOutputStream;
312 import java.security.DomainCombiner;
313 import java.security.GeneralSecurityException;
314 import java.security.Guard;
315 import java.security.GuardedObject;
316 import java.security.Identity;
317 import java.security.IdentityScope;
318 import java.security.InvalidAlgorithmParameterException;
319 import java.security.InvalidKeyException;
320 import java.security.InvalidParameterException;
321 import java.security.Key;
322 import java.security.KeyException;
323 import java.security.KeyFactory;
324 import java.security.KeyFactorySpi;
325 import java.security.KeyManagementException;
326 import java.security.KeyPair;
327 import java.security.KeyPairGenerator;
328 import java.security.KeyPairGeneratorSpi;
329 import java.security.KeyRep;
330 import java.security.KeyStore;
331 import java.security.KeyStoreException;
332 import java.security.KeyStoreSpi;
333 import java.security.MessageDigest;
334 import java.security.MessageDigestSpi;
335 import java.security.NoSuchAlgorithmException;
336 import java.security.NoSuchProviderException;
337 import java.security.Permission;
338 import java.security.PermissionCollection;
339 import java.security.Permissions;
340 import java.security.Policy;
341 import java.security.PolicySpi;
342 import java.security.Principal;
343 import java.security.PrivateKey;
344 import java.security.PrivilegedAction;
345 import java.security.PrivilegedActionException;
346 import java.security.PrivilegedExceptionAction;
347 import java.security.ProtectionDomain;
348 import java.security.Provider;
349 import java.security.ProviderException;
350 import java.security.PublicKey;
351 import java.security.SecureClassLoader;
352 import java.security.SecureRandom;
353 import java.security.SecureRandomSpi;
354 import java.security.Security;
355 import java.security.SecurityPermission;
356 import java.security.Signature;
357 import java.security.SignatureException;
358 import java.security.SignatureSpi;
359 import java.security.SignedObject;
360 import java.security.Signer;
361 import java.security.UnrecoverableEntryException;
362 import java.security.UnrecoverableKeyException;
363 import java.security.UnresolvedPermission;
364 import java.sql.BatchUpdateException;
365 import java.sql.Blob;
366 import java.sql.CallableStatement;
367 import java.sql.Clob;
368 import java.sql.Connection;
369 import java.sql.DataTruncation;
370 import java.sql.DatabaseMetaData;
371 import java.sql.Driver;
372 import java.sql.DriverManager;
373 import java.sql.DriverPropertyInfo;
374 import java.sql.NClob;
375 import java.sql.ParameterMetaData;
376 import java.sql.PreparedStatement;
377 import java.sql.Ref;
378 import java.sql.ResultSet;
379 import java.sql.ResultSetMetaData;
380 import java.sql.RowId;
381 import java.sql.SQLClientInfoException;
382 import java.sql.SQLData;
383 import java.sql.SQLDataException;
384 import java.sql.SQLException;
385 import java.sql.SQLFeatureNotSupportedException;
386 import java.sql.SQLInput;
387 import java.sql.SQLIntegrityConstraintViolationException;
388 import java.sql.SQLInvalidAuthorizationSpecException;
389 import java.sql.SQLNonTransientConnectionException;
390 import java.sql.SQLNonTransientException;
391 import java.sql.SQLOutput;
392 import java.sql.SQLPermission;
393 import java.sql.SQLRecoverableException;
394 import java.sql.SQLSyntaxErrorException;
395 import java.sql.SQLTimeoutException;
396 import java.sql.SQLTransactionRollbackException;
397 import java.sql.SQLTransientConnectionException;
398 import java.sql.SQLTransientException;
399 import java.sql.SQLWarning;
400 import java.sql.SQLXML;
401 import java.sql.Savepoint;
402 import java.sql.Statement;
403 import java.sql.Struct;
404 import java.sql.Time;
405 import java.sql.Timestamp;
406 import java.sql.Types;
407 import java.sql.Wrapper;
408 import java.text.AttributedCharacterIterator;
409 import java.text.AttributedString;
410 import java.text.Bidi;
411 import java.text.BreakIterator;
412 import java.text.CharacterIterator;
413 import java.text.ChoiceFormat;
414 import java.text.CollationElementIterator;
415 import java.text.CollationKey;
416 import java.text.Collator;
417 import java.text.DateFormat;
418 import java.text.DateFormatSymbols;
419 import java.text.DecimalFormat;
420 import java.text.DecimalFormatSymbols;
421 import java.text.FieldPosition;
422 import java.text.Format;
423 import java.text.MessageFormat;
424 import java.text.Normalizer;
425 import java.text.NumberFormat;
426 import java.text.ParseException;
427 import java.text.ParsePosition;
428 import java.text.RuleBasedCollator;
429 import java.text.SimpleDateFormat;
430 import java.text.StringCharacterIterator;
431 import java.time.Clock;
432 import java.time.DateTimeException;
433 import java.time.DayOfWeek;
434 import java.time.Duration;
435 import java.time.Instant;
436 import java.time.LocalDate;
437 import java.time.LocalDateTime;
438 import java.time.LocalTime;
439 import java.time.Month;
440 import java.time.MonthDay;
441 import java.time.OffsetDateTime;
442 import java.time.OffsetTime;
443 import java.time.Period;
444 import java.time.Year;
445 import java.time.YearMonth;
446 import java.time.ZoneId;
447 import java.time.ZoneOffset;
448 import java.time.ZonedDateTime;
449 import java.time.chrono.AbstractChronology;
450 import java.time.chrono.ChronoLocalDate;
451 import java.time.chrono.ChronoLocalDateTime;
452 import java.time.chrono.ChronoPeriod;
453 import java.time.chrono.ChronoZonedDateTime;
454 import java.time.chrono.Chronology;
455 import java.time.chrono.Era;
456 import java.time.chrono.HijrahChronology;
457 import java.time.chrono.HijrahDate;
458 import java.time.chrono.HijrahEra;
459 import java.time.chrono.IsoChronology;
460 import java.time.chrono.IsoEra;
461 import java.time.chrono.JapaneseChronology;
462 import java.time.chrono.JapaneseDate;
463 import java.time.chrono.JapaneseEra;
464 import java.time.chrono.MinguoChronology;
465 import java.time.chrono.MinguoDate;
466 import java.time.chrono.MinguoEra;
467 import java.time.chrono.ThaiBuddhistChronology;
468 import java.time.chrono.ThaiBuddhistDate;
469 import java.time.chrono.ThaiBuddhistEra;
470 import java.time.format.DateTimeFormatter;
471 import java.time.format.DateTimeFormatterBuilder;
472 import java.time.format.DateTimeParseException;
473 import java.time.format.DecimalStyle;
474 import java.time.format.FormatStyle;
475 import java.time.format.ResolverStyle;
476 import java.time.format.SignStyle;
477 import java.time.format.TextStyle;
478 import java.time.temporal.ChronoField;
479 import java.time.temporal.ChronoUnit;
480 import java.time.temporal.IsoFields;
481 import java.time.temporal.JulianFields;
482 import java.time.temporal.Temporal;
483 import java.time.temporal.TemporalAccessor;
484 import java.time.temporal.TemporalAdjuster;
485 import java.time.temporal.TemporalAdjusters;
486 import java.time.temporal.TemporalAmount;
487 import java.time.temporal.TemporalField;
488 import java.time.temporal.TemporalQueries;
489 import java.time.temporal.TemporalQuery;
490 import java.time.temporal.TemporalUnit;
491 import java.time.temporal.UnsupportedTemporalTypeException;
492 import java.time.temporal.ValueRange;
493 import java.time.temporal.WeekFields;
494 import java.time.zone.ZoneOffsetTransition;
495 import java.time.zone.ZoneOffsetTransitionRule;
496 import java.time.zone.ZoneRules;
497 import java.time.zone.ZoneRulesException;
498 import java.time.zone.ZoneRulesProvider;
499 import java.util.AbstractCollection;
500 import java.util.AbstractList;
501 import java.util.AbstractMap;
502 import java.util.AbstractQueue;
503 import java.util.AbstractSequentialList;
504 import java.util.AbstractSet;
505 import java.util.ArrayDeque;
506 import java.util.ArrayList;
507 import java.util.Arrays;
508 import java.util.Base64;
509 import java.util.BitSet;
510 import java.util.Calendar;
511 import java.util.Collection;
512 import java.util.Collections;
513 import java.util.Comparator;
514 import java.util.ConcurrentModificationException;
515 import java.util.Currency;
516 import java.util.Date;
517 import java.util.Deque;
518 import java.util.Dictionary;
519 import java.util.DoubleSummaryStatistics;
520 import java.util.DuplicateFormatFlagsException;
521 import java.util.EmptyStackException;
522 import java.util.EnumMap;
523 import java.util.EnumSet;
524 import java.util.Enumeration;
525 import java.util.EventListener;
526 import java.util.EventListenerProxy;
527 import java.util.EventObject;
528 import java.util.FormatFlagsConversionMismatchException;
529 import java.util.Formattable;
530 import java.util.FormattableFlags;
531 import java.util.Formatter;
532 import java.util.FormatterClosedException;
533 import java.util.GregorianCalendar;
534 import java.util.HashMap;
535 import java.util.HashSet;
536 import java.util.Hashtable;
537 import java.util.IdentityHashMap;
538 import java.util.IllegalFormatCodePointException;
539 import java.util.IllegalFormatConversionException;
540 import java.util.IllegalFormatException;
541 import java.util.IllegalFormatFlagsException;
542 import java.util.IllegalFormatPrecisionException;
543 import java.util.IllegalFormatWidthException;
544 import java.util.IllformedLocaleException;
545 import java.util.InputMismatchException;
546 import java.util.IntSummaryStatistics;
547 import java.util.InvalidPropertiesFormatException;
548 import java.util.Iterator;
549 import java.util.LinkedHashMap;
550 import java.util.LinkedHashSet;
551 import java.util.LinkedList;
552 import java.util.List;
553 import java.util.ListIterator;
554 import java.util.ListResourceBundle;
555 import java.util.Locale;
556 import java.util.LongSummaryStatistics;
557 import java.util.Map;
558 import java.util.MissingFormatArgumentException;
559 import java.util.MissingFormatWidthException;
560 import java.util.MissingResourceException;
561 import java.util.NavigableMap;
562 import java.util.NavigableSet;
563 import java.util.NoSuchElementException;
564 import java.util.Objects;
565 import java.util.Observable;
566 import java.util.Observer;
567 import java.util.Optional;
568 import java.util.OptionalDouble;
569 import java.util.OptionalInt;
570 import java.util.OptionalLong;
571 import java.util.PrimitiveIterator;
572 import java.util.PriorityQueue;
573 import java.util.Properties;
574 import java.util.PropertyPermission;
575 import java.util.PropertyResourceBundle;
576 import java.util.Queue;
577 import java.util.Random;
578 import java.util.RandomAccess;
579 import java.util.ResourceBundle;
580 import java.util.Scanner;
581 import java.util.ServiceConfigurationError;
582 import java.util.ServiceLoader;
583 import java.util.Set;
584 import java.util.SimpleTimeZone;
585 import java.util.SortedMap;
586 import java.util.SortedSet;
587 import java.util.Spliterator;
588 import java.util.Spliterators;
589 import java.util.SplittableRandom;
590 import java.util.Stack;
591 import java.util.StringJoiner;
592 import java.util.StringTokenizer;
593 import java.util.TimeZone;
594 import java.util.Timer;
595 import java.util.TimerTask;
596 import java.util.TooManyListenersException;
597 import java.util.TreeMap;
598 import java.util.TreeSet;
599 import java.util.UUID;
600 import java.util.UnknownFormatConversionException;
601 import java.util.UnknownFormatFlagsException;
602 import java.util.Vector;
603 import java.util.WeakHashMap;
604 import java.util.concurrent.AbstractExecutorService;
605 import java.util.concurrent.ArrayBlockingQueue;
606 import java.util.concurrent.BlockingDeque;
607 import java.util.concurrent.BlockingQueue;
608 import java.util.concurrent.BrokenBarrierException;
609 import java.util.concurrent.Callable;
610 import java.util.concurrent.CancellationException;
611 import java.util.concurrent.CompletableFuture;
612 import java.util.concurrent.CompletionException;
613 import java.util.concurrent.CompletionService;
614 import java.util.concurrent.ConcurrentHashMap;
615 import java.util.concurrent.ConcurrentLinkedDeque;
616 import java.util.concurrent.ConcurrentLinkedQueue;
617 import java.util.concurrent.ConcurrentMap;
618 import java.util.concurrent.ConcurrentNavigableMap;
619 import java.util.concurrent.ConcurrentSkipListMap;
620 import java.util.concurrent.ConcurrentSkipListSet;
621 import java.util.concurrent.CopyOnWriteArrayList;
622 import java.util.concurrent.CopyOnWriteArraySet;
623 import java.util.concurrent.CountDownLatch;
624 import java.util.concurrent.CountedCompleter;
625 import java.util.concurrent.CyclicBarrier;
626 import java.util.concurrent.DelayQueue;
627 import java.util.concurrent.Delayed;
628 import java.util.concurrent.Exchanger;
629 import java.util.concurrent.ExecutionException;
630 import java.util.concurrent.Executor;
631 import java.util.concurrent.ExecutorCompletionService;
632 import java.util.concurrent.ExecutorService;
633 import java.util.concurrent.Executors;
634 import java.util.concurrent.ForkJoinPool;
635 import java.util.concurrent.ForkJoinTask;
636 import java.util.concurrent.ForkJoinWorkerThread;
637 import java.util.concurrent.Future;
638 import java.util.concurrent.FutureTask;
639 import java.util.concurrent.LinkedBlockingDeque;
640 import java.util.concurrent.LinkedBlockingQueue;
641 import java.util.concurrent.LinkedTransferQueue;
642 import java.util.concurrent.Phaser;
643 import java.util.concurrent.PriorityBlockingQueue;
644 import java.util.concurrent.RecursiveAction;
645 import java.util.concurrent.RecursiveTask;
646 import java.util.concurrent.RejectedExecutionException;
647 import java.util.concurrent.RejectedExecutionHandler;
648 import java.util.concurrent.RunnableFuture;
649 import java.util.concurrent.RunnableScheduledFuture;
650 import java.util.concurrent.ScheduledExecutorService;
651 import java.util.concurrent.ScheduledFuture;
652 import java.util.concurrent.ScheduledThreadPoolExecutor;
653 import java.util.concurrent.Semaphore;
654 import java.util.concurrent.SynchronousQueue;
655 import java.util.concurrent.ThreadFactory;
656 import java.util.concurrent.ThreadLocalRandom;
657 import java.util.concurrent.ThreadPoolExecutor;
658 import java.util.concurrent.TimeUnit;
659 import java.util.concurrent.TimeoutException;
660 import java.util.concurrent.TransferQueue;
661 import java.util.concurrent.atomic.AtomicBoolean;
662 import java.util.concurrent.atomic.AtomicInteger;
663 import java.util.concurrent.atomic.AtomicIntegerArray;
664 import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
665 import java.util.concurrent.atomic.AtomicLong;
666 import java.util.concurrent.atomic.AtomicLongArray;
667 import java.util.concurrent.atomic.AtomicLongFieldUpdater;
668 import java.util.concurrent.atomic.AtomicMarkableReference;
669 import java.util.concurrent.atomic.AtomicReference;
670 import java.util.concurrent.atomic.AtomicReferenceArray;
671 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
672 import java.util.concurrent.atomic.AtomicStampedReference;
673 import java.util.concurrent.atomic.DoubleAccumulator;
674 import java.util.concurrent.atomic.DoubleAdder;
675 import java.util.concurrent.atomic.LongAccumulator;
676 import java.util.concurrent.atomic.LongAdder;
677 import java.util.concurrent.locks.AbstractOwnableSynchronizer;
678 import java.util.concurrent.locks.AbstractQueuedLongSynchronizer;
679 import java.util.concurrent.locks.AbstractQueuedSynchronizer;
680 import java.util.concurrent.locks.Condition;
681 import java.util.concurrent.locks.Lock;
682 import java.util.concurrent.locks.LockSupport;
683 import java.util.concurrent.locks.ReadWriteLock;
684 import java.util.concurrent.locks.ReentrantLock;
685 import java.util.concurrent.locks.ReentrantReadWriteLock;
686 import java.util.concurrent.locks.StampedLock;
687 import java.util.function.BiConsumer;
688 import java.util.function.BiFunction;
689 import java.util.function.BiPredicate;
690 import java.util.function.BinaryOperator;
691 import java.util.function.BooleanSupplier;
692 import java.util.function.Consumer;
693 import java.util.function.DoubleBinaryOperator;
694 import java.util.function.DoubleConsumer;
695 import java.util.function.DoubleFunction;
696 import java.util.function.DoublePredicate;
697 import java.util.function.DoubleSupplier;
698 import java.util.function.DoubleToIntFunction;
699 import java.util.function.DoubleToLongFunction;
700 import java.util.function.DoubleUnaryOperator;
701 import java.util.function.Function;
702 import java.util.function.IntBinaryOperator;
703 import java.util.function.IntConsumer;
704 import java.util.function.IntFunction;
705 import java.util.function.IntPredicate;
706 import java.util.function.IntSupplier;
707 import java.util.function.IntToDoubleFunction;
708 import java.util.function.IntToLongFunction;
709 import java.util.function.IntUnaryOperator;
710 import java.util.function.LongBinaryOperator;
711 import java.util.function.LongConsumer;
712 import java.util.function.LongFunction;
713 import java.util.function.LongPredicate;
714 import java.util.function.LongSupplier;
715 import java.util.function.LongToDoubleFunction;
716 import java.util.function.LongToIntFunction;
717 import java.util.function.LongUnaryOperator;
718 import java.util.function.ObjDoubleConsumer;
719 import java.util.function.ObjIntConsumer;
720 import java.util.function.ObjLongConsumer;
721 import java.util.function.Predicate;
722 import java.util.function.Supplier;
723 import java.util.function.ToDoubleBiFunction;
724 import java.util.function.ToDoubleFunction;
725 import java.util.function.ToIntBiFunction;
726 import java.util.function.ToIntFunction;
727 import java.util.function.ToLongBiFunction;
728 import java.util.function.ToLongFunction;
729 import java.util.function.UnaryOperator;
730 import java.util.regex.MatchResult;
731 import java.util.regex.Matcher;
732 import java.util.regex.Pattern;
733 import java.util.regex.PatternSyntaxException;
734 import java.util.stream.BaseStream;
735 import java.util.stream.Collector;
736 import java.util.stream.Collectors;
737 import java.util.stream.DoubleStream;
738 import java.util.stream.IntStream;
739 import java.util.stream.LongStream;
740 import java.util.stream.Stream;
741 import java.util.stream.StreamSupport;
742 
743 public class Java8PublicClasses {
744 
745     // java.io
746     private static final Class<?>[] JAVA_IO = { BufferedInputStream.class, BufferedOutputStream.class, BufferedReader.class, BufferedWriter.class,
747             ByteArrayInputStream.class, ByteArrayOutputStream.class, CharArrayReader.class, CharArrayWriter.class, Closeable.class, Console.class,
748             DataInput.class, DataInputStream.class, DataOutput.class, DataOutputStream.class, File.class, FileDescriptor.class, FileInputStream.class,
749             FileOutputStream.class, FilePermission.class, FileReader.class, FileWriter.class, FilterInputStream.class, FilterOutputStream.class,
750             FilterReader.class, FilterWriter.class, Flushable.class, InputStream.class, InputStreamReader.class, LineNumberReader.class, ObjectInput.class,
751             ObjectInputStream.class, ObjectOutput.class, ObjectOutputStream.class, ObjectStreamClass.class, ObjectStreamField.class, OutputStream.class,
752             OutputStreamWriter.class, PipedInputStream.class, PipedOutputStream.class, PipedReader.class, PipedWriter.class, PrintStream.class,
753             PrintWriter.class, PushbackInputStream.class, PushbackReader.class, RandomAccessFile.class, Reader.class, SequenceInputStream.class,
754             Serializable.class, SerializablePermission.class, StreamTokenizer.class, StringReader.class, StringWriter.class, Writer.class, Externalizable.class,
755             FileFilter.class, FilenameFilter.class, ObjectInputValidation.class,
756             // Exceptions
757             CharConversionException.class, EOFException.class, FileNotFoundException.class, InterruptedIOException.class, InvalidClassException.class,
758             InvalidObjectException.class, IOException.class, NotActiveException.class, NotSerializableException.class, ObjectStreamException.class,
759             OptionalDataException.class, StreamCorruptedException.class, SyncFailedException.class, UnsupportedEncodingException.class,
760             UTFDataFormatException.class, WriteAbortedException.class, UncheckedIOException.class };
761 
762     // java.lang
763     private static final Class<?>[] JAVA_LANG = { Appendable.class, AutoCloseable.class, Boolean.class, Byte.class, CharSequence.class, Character.class,
764             Class.class, ClassLoader.class, ClassValue.class, Cloneable.class, Comparable.class, /* Compiler.class, */ Double.class, Enum.class, Float.class,
765             InheritableThreadLocal.class, Integer.class, Iterable.class, Long.class, Math.class, Number.class, Object.class, Package.class, Process.class,
766             ProcessBuilder.class, Readable.class, Runnable.class, Runtime.class, RuntimePermission.class, SecurityManager.class, Short.class,
767             StackTraceElement.class, StrictMath.class, String.class, StringBuffer.class, StringBuilder.class, System.class, Thread.class, ThreadGroup.class,
768             ThreadLocal.class, Throwable.class, Void.class,
769             // Exceptions
770             ArithmeticException.class, ArrayIndexOutOfBoundsException.class, ArrayStoreException.class, ClassCastException.class, ClassNotFoundException.class,
771             CloneNotSupportedException.class, EnumConstantNotPresentException.class, Exception.class, IllegalAccessException.class,
772             IllegalArgumentException.class, IllegalMonitorStateException.class, IllegalStateException.class, IllegalThreadStateException.class,
773             IndexOutOfBoundsException.class, InstantiationException.class, InterruptedException.class, NegativeArraySizeException.class,
774             NoSuchFieldException.class, NoSuchMethodException.class, NullPointerException.class, NumberFormatException.class,
775             ReflectiveOperationException.class, RuntimeException.class, SecurityException.class, StringIndexOutOfBoundsException.class,
776             TypeNotPresentException.class, UnsupportedOperationException.class,
777             // Errors
778             AbstractMethodError.class, AssertionError.class, BootstrapMethodError.class, ClassCircularityError.class, ClassFormatError.class, Error.class,
779             ExceptionInInitializerError.class, IllegalAccessError.class, IncompatibleClassChangeError.class, InstantiationError.class, InternalError.class,
780             LinkageError.class, NoClassDefFoundError.class, NoSuchFieldError.class, NoSuchMethodError.class, OutOfMemoryError.class, StackOverflowError.class,
781             ThreadDeath.class, UnknownError.class, UnsatisfiedLinkError.class, UnsupportedClassVersionError.class, VerifyError.class,
782             VirtualMachineError.class };
783 
784     // java.lang.annotation
785     private static final Class<?>[] JAVA_LANG_ANNOTATION = { Annotation.class, Documented.class, Inherited.class, Retention.class, Target.class,
786             AnnotationFormatError.class, AnnotationTypeMismatchException.class, IncompleteAnnotationException.class, Repeatable.class, Native.class };
787 
788     // java.lang.invoke
789     private static final Class<?>[] JAVA_LANG_INVOKE = { CallSite.class, ConstantCallSite.class, MethodHandle.class, MethodHandleInfo.class,
790             MethodHandles.class, MethodType.class, MutableCallSite.class, SwitchPoint.class, VolatileCallSite.class, WrongMethodTypeException.class,
791             LambdaMetafactory.class };
792 
793     // java.lang.ref
794     private static final Class<?>[] JAVA_LANG_REF = { PhantomReference.class, Reference.class, ReferenceQueue.class, SoftReference.class,
795             WeakReference.class };
796 
797     // java.lang.reflect
798     private static final Class<?>[] JAVA_LANG_REFLECT = { AccessibleObject.class, AnnotatedElement.class, Array.class, Constructor.class,
799             Executable.class, Field.class, GenericArrayType.class, GenericDeclaration.class, InvocationHandler.class, Member.class, Method.class,
800             Modifier.class, Parameter.class, ParameterizedType.class, Proxy.class, ReflectPermission.class, Type.class, TypeVariable.class, WildcardType.class,
801             AnnotatedType.class, AnnotatedArrayType.class, AnnotatedParameterizedType.class, AnnotatedTypeVariable.class, AnnotatedWildcardType.class,
802             InvocationTargetException.class, MalformedParameterizedTypeException.class, UndeclaredThrowableException.class };
803 
804     // java.math
805     private static final Class<?>[] JAVA_MATH = { BigDecimal.class, BigInteger.class, MathContext.class, RoundingMode.class };
806 
807     // java.net
808     private static final Class<?>[] JAVA_NET = { Authenticator.class, CacheRequest.class, CacheResponse.class, ContentHandler.class,
809             CookieHandler.class, CookieManager.class, CookiePolicy.class, CookieStore.class, DatagramPacket.class, DatagramSocket.class,
810             DatagramSocketImpl.class, FileNameMap.class, HttpCookie.class, HttpURLConnection.class, IDN.class, Inet4Address.class, Inet6Address.class,
811             InetAddress.class, InetSocketAddress.class, InterfaceAddress.class, JarURLConnection.class, MulticastSocket.class, NetPermission.class,
812             NetworkInterface.class, PasswordAuthentication.class, Proxy.class, ProxySelector.class, ResponseCache.class, SecureCacheResponse.class,
813             ServerSocket.class, Socket.class, SocketAddress.class, SocketImpl.class, SocketOption.class, SocketOptions.class, SocketPermission.class,
814             StandardProtocolFamily.class, StandardSocketOptions.class, URI.class, URL.class, URLClassLoader.class, URLConnection.class, URLDecoder.class,
815             URLEncoder.class, URLStreamHandler.class, BindException.class, ConnectException.class, HttpRetryException.class, MalformedURLException.class,
816             NoRouteToHostException.class, PortUnreachableException.class, ProtocolException.class, SocketException.class, SocketTimeoutException.class,
817             UnknownHostException.class, UnknownServiceException.class, URISyntaxException.class };
818 
819     // java.nio
820     private static final Class<?>[] JAVA_NIO = { Buffer.class, ByteBuffer.class, ByteOrder.class, CharBuffer.class, DoubleBuffer.class,
821             FloatBuffer.class, IntBuffer.class, LongBuffer.class, MappedByteBuffer.class, ShortBuffer.class, BufferOverflowException.class,
822             BufferUnderflowException.class, InvalidMarkException.class, ReadOnlyBufferException.class };
823 
824     // java.nio.charset
825     private static final Class<?>[] JAVA_NIO_CHARSET = { Charset.class, CharsetDecoder.class, CharsetEncoder.class, CoderResult.class,
826             CodingErrorAction.class, StandardCharsets.class, CharacterCodingException.class, IllegalCharsetNameException.class, MalformedInputException.class,
827             UnmappableCharacterException.class, UnsupportedCharsetException.class };
828 
829     // java.nio.file
830     private static final Class<?>[] JAVA_NIO_FILE = { DirectoryStream.class, FileSystem.class, FileSystems.class, FileVisitOption.class,
831             FileVisitResult.class, FileVisitor.class, Files.class, LinkOption.class, OpenOption.class, Path.class, PathMatcher.class, Paths.class,
832             SimpleFileVisitor.class, StandardCopyOption.class, StandardOpenOption.class, StandardWatchEventKinds.class, WatchEvent.class, WatchKey.class,
833             WatchService.class, Watchable.class, AccessDeniedException.class, AtomicMoveNotSupportedException.class, ClosedDirectoryStreamException.class,
834             ClosedFileSystemException.class, ClosedWatchServiceException.class, DirectoryIteratorException.class, DirectoryNotEmptyException.class,
835             FileAlreadyExistsException.class, FileSystemException.class, FileSystemLoopException.class, FileSystemNotFoundException.class,
836             InvalidPathException.class, NoSuchFileException.class, NotDirectoryException.class, NotLinkException.class, ProviderMismatchException.class,
837             ProviderNotFoundException.class, ReadOnlyFileSystemException.class };
838 
839     // java.nio.file.attribute
840     private static final Class<?>[] JAVA_NIO_FILE_ATTRIBUTE = { AclEntry.class, AclEntryFlag.class, AclEntryPermission.class, AclEntryType.class,
841             AclFileAttributeView.class, AttributeView.class, BasicFileAttributeView.class, BasicFileAttributes.class, DosFileAttributeView.class,
842             DosFileAttributes.class, FileAttribute.class, FileAttributeView.class, FileOwnerAttributeView.class, FileStoreAttributeView.class, FileTime.class,
843             GroupPrincipal.class, PosixFileAttributeView.class, PosixFileAttributes.class, PosixFilePermission.class, PosixFilePermissions.class,
844             UserDefinedFileAttributeView.class, UserPrincipal.class, UserPrincipalLookupService.class, UserPrincipalNotFoundException.class };
845 
846     // java.security
847     private static final Class<?>[] JAVA_SECURITY = { AccessControlContext.class, AccessController.class, AlgorithmParameterGenerator.class,
848             AlgorithmParameters.class, AlgorithmParametersSpi.class, AllPermission.class, AuthProvider.class, BasicPermission.class, Certificate.class,
849             CodeSigner.class, CodeSource.class, DigestInputStream.class, DigestOutputStream.class, DomainCombiner.class, Guard.class, GuardedObject.class,
850             Identity.class, IdentityScope.class, Key.class, KeyFactory.class, KeyFactorySpi.class, KeyPair.class, KeyPairGenerator.class,
851             KeyPairGeneratorSpi.class, KeyRep.class, KeyStore.class, KeyStoreSpi.class, MessageDigest.class, MessageDigestSpi.class, Permission.class,
852             PermissionCollection.class, Permissions.class, Policy.class, PolicySpi.class, Principal.class, PrivateKey.class, PrivilegedAction.class,
853             PrivilegedActionException.class, PrivilegedExceptionAction.class, ProtectionDomain.class, Provider.class, PublicKey.class, SecureClassLoader.class,
854             SecureRandom.class, SecureRandomSpi.class, Security.class, SecurityPermission.class, Signature.class, SignatureException.class, SignatureSpi.class,
855             SignedObject.class, Signer.class, java.security.Timestamp.class, UnrecoverableEntryException.class, UnrecoverableKeyException.class,
856             UnresolvedPermission.class, AccessControlException.class, DigestException.class, GeneralSecurityException.class,
857             InvalidAlgorithmParameterException.class, InvalidKeyException.class, InvalidParameterException.class, KeyException.class,
858             KeyManagementException.class, KeyStoreException.class, NoSuchAlgorithmException.class, NoSuchProviderException.class, ProviderException.class };
859 
860     // java.sql
861     private static final Class<?>[] JAVA_SQL = { Array.class, Blob.class, CallableStatement.class, Clob.class, Connection.class, DatabaseMetaData.class,
862             java.sql.Date.class, Driver.class, DriverManager.class, DriverPropertyInfo.class, NClob.class, ParameterMetaData.class, PreparedStatement.class,
863             Ref.class, ResultSet.class, ResultSetMetaData.class, RowId.class, Savepoint.class, SQLData.class, SQLInput.class, SQLOutput.class,
864             SQLPermission.class, SQLXML.class, Statement.class, Struct.class, Time.class, Timestamp.class, Types.class, Wrapper.class,
865             BatchUpdateException.class, DataTruncation.class, SQLClientInfoException.class, SQLException.class, SQLDataException.class,
866             SQLFeatureNotSupportedException.class, SQLIntegrityConstraintViolationException.class, SQLInvalidAuthorizationSpecException.class,
867             SQLNonTransientConnectionException.class, SQLNonTransientException.class, SQLRecoverableException.class, SQLSyntaxErrorException.class,
868             SQLTimeoutException.class, SQLTransactionRollbackException.class, SQLTransientConnectionException.class, SQLTransientException.class,
869             SQLWarning.class };
870 
871     // java.text
872     private static final Class<?>[] JAVA_TEXT = { Annotation.class, AttributedCharacterIterator.class, AttributedString.class, Bidi.class,
873             BreakIterator.class, CharacterIterator.class, ChoiceFormat.class, CollationElementIterator.class, CollationKey.class, Collator.class,
874             DateFormat.class, DateFormatSymbols.class, DecimalFormat.class, DecimalFormatSymbols.class, FieldPosition.class, Format.class, MessageFormat.class,
875             Normalizer.class, NumberFormat.class, ParsePosition.class, RuleBasedCollator.class, SimpleDateFormat.class, StringCharacterIterator.class,
876             ParseException.class };
877 
878     // java.time
879     private static final Class<?>[] JAVA_TIME = { Clock.class, DateTimeException.class, DayOfWeek.class, Duration.class, Instant.class, LocalDate.class,
880             LocalDateTime.class, LocalTime.class, Month.class, MonthDay.class, OffsetDateTime.class, OffsetTime.class, Period.class, Year.class,
881             YearMonth.class, ZonedDateTime.class, ZoneId.class, ZoneOffset.class };
882 
883     // java.time.chrono
884     private static final Class<?>[] JAVA_TIME_CHRONO = { AbstractChronology.class, ChronoLocalDate.class, ChronoLocalDateTime.class, Chronology.class,
885             ChronoPeriod.class, ChronoZonedDateTime.class, Era.class, HijrahChronology.class, HijrahDate.class, HijrahEra.class, IsoChronology.class,
886             IsoEra.class, JapaneseChronology.class, JapaneseDate.class, JapaneseEra.class, MinguoChronology.class, MinguoDate.class, MinguoEra.class,
887             ThaiBuddhistChronology.class, ThaiBuddhistDate.class, ThaiBuddhistEra.class };
888 
889     // java.time.format
890     private static final Class<?>[] JAVA_TIME_FORMAT = { DateTimeFormatter.class, DateTimeFormatterBuilder.class, DateTimeParseException.class,
891             DecimalStyle.class, FormatStyle.class, ResolverStyle.class, SignStyle.class, TextStyle.class };
892 
893     // java.time.temporal
894     private static final Class<?>[] JAVA_TIME_TEMPORAL = { ChronoField.class, ChronoUnit.class, IsoFields.class, JulianFields.class, Temporal.class,
895             TemporalAccessor.class, TemporalAdjuster.class, TemporalAdjusters.class, TemporalAmount.class, TemporalField.class, TemporalQueries.class,
896             TemporalQuery.class, TemporalUnit.class, ValueRange.class, WeekFields.class, UnsupportedTemporalTypeException.class };
897 
898     // java.time.zone
899     private static final Class<?>[] JAVA_TIME_ZONE = { ZoneOffsetTransition.class, ZoneOffsetTransitionRule.class, ZoneRules.class,
900             ZoneRulesException.class, ZoneRulesProvider.class };
901 
902     // java.util
903     private static final Class<?>[] JAVA_UTIL = { AbstractCollection.class, AbstractList.class, AbstractMap.class, AbstractQueue.class,
904             AbstractSequentialList.class, AbstractSet.class, ArrayDeque.class, ArrayList.class, Arrays.class, Base64.class, BitSet.class, Calendar.class,
905             Collection.class, Collections.class, Comparator.class, Currency.class, Date.class, Deque.class, Dictionary.class, DoubleSummaryStatistics.class,
906             EnumMap.class, EnumSet.class, Enumeration.class, EventListener.class, EventListenerProxy.class, EventObject.class, FormattableFlags.class,
907             Formatter.class, GregorianCalendar.class, HashMap.class, HashSet.class, Hashtable.class, IdentityHashMap.class, IntSummaryStatistics.class,
908             Iterator.class, LinkedHashMap.class, LinkedHashSet.class, LinkedList.class, List.class, ListIterator.class, ListResourceBundle.class, Locale.class,
909             LongSummaryStatistics.class, Map.class, NavigableMap.class, NavigableSet.class, Objects.class, Observable.class, Observer.class, Optional.class,
910             OptionalDouble.class, OptionalInt.class, OptionalLong.class, PrimitiveIterator.class, PriorityQueue.class, Properties.class,
911             PropertyPermission.class, PropertyResourceBundle.class, Queue.class, Random.class, RandomAccess.class, ResourceBundle.class, Scanner.class,
912             ServiceLoader.class, Set.class, SimpleTimeZone.class, SortedMap.class, SortedSet.class, Spliterator.class, Spliterators.class,
913             SplittableRandom.class, Stack.class, StringJoiner.class, StringTokenizer.class, Timer.class, TimerTask.class, TimeZone.class, TreeMap.class,
914             TreeSet.class, UUID.class, Vector.class, WeakHashMap.class, Formattable.class,
915             // Exceptions
916             ConcurrentModificationException.class, DuplicateFormatFlagsException.class, EmptyStackException.class, FormatFlagsConversionMismatchException.class,
917             FormatterClosedException.class, IllegalFormatCodePointException.class, IllegalFormatConversionException.class, IllegalFormatException.class,
918             IllegalFormatFlagsException.class, IllegalFormatPrecisionException.class, IllegalFormatWidthException.class, IllformedLocaleException.class,
919             InputMismatchException.class, InvalidPropertiesFormatException.class, MissingFormatArgumentException.class, MissingFormatWidthException.class,
920             MissingResourceException.class, NoSuchElementException.class, TooManyListenersException.class, UnknownFormatConversionException.class,
921             UnknownFormatFlagsException.class, ServiceConfigurationError.class };
922 
923     // java.util.concurrent
924     private static final Class<?>[] JAVA_UTIL_CONCURRENT = { AbstractExecutorService.class, ArrayBlockingQueue.class, BlockingDeque.class,
925             BlockingQueue.class, Callable.class, CompletableFuture.class, CompletionException.class, CompletionService.class, ConcurrentHashMap.class,
926             ConcurrentLinkedDeque.class, ConcurrentLinkedQueue.class, ConcurrentMap.class, ConcurrentNavigableMap.class, ConcurrentSkipListMap.class,
927             ConcurrentSkipListSet.class, CopyOnWriteArrayList.class, CopyOnWriteArraySet.class, CountDownLatch.class, CountedCompleter.class,
928             CyclicBarrier.class, Delayed.class, DelayQueue.class, Exchanger.class, Executor.class, ExecutorCompletionService.class, ExecutorService.class,
929             Executors.class, ForkJoinPool.class, ForkJoinTask.class, ForkJoinWorkerThread.class, Future.class, FutureTask.class, LinkedBlockingDeque.class,
930             LinkedBlockingQueue.class, LinkedTransferQueue.class, Phaser.class, PriorityBlockingQueue.class, RecursiveAction.class, RecursiveTask.class,
931             RejectedExecutionHandler.class, RunnableFuture.class, RunnableScheduledFuture.class, ScheduledExecutorService.class, ScheduledFuture.class,
932             ScheduledThreadPoolExecutor.class, Semaphore.class, SynchronousQueue.class, ThreadFactory.class, ThreadLocalRandom.class, ThreadPoolExecutor.class,
933             TimeUnit.class, TransferQueue.class, BrokenBarrierException.class, CancellationException.class, CompletionException.class, ExecutionException.class,
934             RejectedExecutionException.class, TimeoutException.class };
935 
936     // java.util.concurrent.atomic
937     private static final Class<?>[] JAVA_UTIL_CONCURRENT_ATOMIC = { AtomicBoolean.class, AtomicInteger.class, AtomicIntegerArray.class,
938             AtomicIntegerFieldUpdater.class, AtomicLong.class, AtomicLongArray.class, AtomicLongFieldUpdater.class, AtomicMarkableReference.class,
939             AtomicReference.class, AtomicReferenceArray.class, AtomicReferenceFieldUpdater.class, AtomicStampedReference.class, DoubleAccumulator.class,
940             DoubleAdder.class, LongAccumulator.class, LongAdder.class };
941 
942     // java.util.concurrent.locks
943     private static final Class<?>[] JAVA_UTIL_CONCURRENT_LOCKS = { AbstractOwnableSynchronizer.class, AbstractQueuedLongSynchronizer.class,
944             AbstractQueuedSynchronizer.class, Condition.class, Lock.class, LockSupport.class, ReadWriteLock.class, ReentrantLock.class,
945             ReentrantReadWriteLock.class, StampedLock.class };
946 
947     // java.util.function
948     private static final Class<?>[] JAVA_UTIL_FUNCTION = { BiConsumer.class, BiFunction.class, BinaryOperator.class, BiPredicate.class,
949             BooleanSupplier.class, Consumer.class, DoubleBinaryOperator.class, DoubleConsumer.class, DoubleFunction.class, DoublePredicate.class,
950             DoubleSupplier.class, DoubleToIntFunction.class, DoubleToLongFunction.class, DoubleUnaryOperator.class, Function.class, IntBinaryOperator.class,
951             IntConsumer.class, IntFunction.class, IntPredicate.class, IntSupplier.class, IntToDoubleFunction.class, IntToLongFunction.class,
952             IntUnaryOperator.class, LongBinaryOperator.class, LongConsumer.class, LongFunction.class, LongPredicate.class, LongSupplier.class,
953             LongToDoubleFunction.class, LongToIntFunction.class, LongUnaryOperator.class, ObjDoubleConsumer.class, ObjIntConsumer.class, ObjLongConsumer.class,
954             Predicate.class, Supplier.class, ToDoubleBiFunction.class, ToDoubleFunction.class, ToIntBiFunction.class, ToIntFunction.class,
955             ToLongBiFunction.class, ToLongFunction.class, UnaryOperator.class };
956 
957     // java.util.regex
958     private static final Class<?>[] JAVA_UTIL_REGEX = { MatchResult.class, Matcher.class, Pattern.class, PatternSyntaxException.class };
959 
960     // java.util.stream
961     private static final Class<?>[] JAVA_UTIL_STREAM = { BaseStream.class, Collector.class, Collectors.class, DoubleStream.class, IntStream.class,
962             LongStream.class, Stream.class, StreamSupport.class };
963 
964     private static final Class<?>[] ALL = addAll(JAVA_LANG, JAVA_LANG_ANNOTATION, JAVA_LANG_INVOKE,
965             JAVA_LANG_REF, JAVA_LANG_REFLECT, JAVA_MATH, JAVA_IO, JAVA_NIO, JAVA_NIO_CHARSET,
966             JAVA_NIO_FILE, JAVA_NIO_FILE_ATTRIBUTE, JAVA_UTIL, JAVA_UTIL_CONCURRENT, JAVA_UTIL_CONCURRENT_ATOMIC,
967             JAVA_UTIL_CONCURRENT_LOCKS, JAVA_UTIL_FUNCTION, JAVA_UTIL_STREAM, JAVA_UTIL_REGEX, JAVA_TIME,
968             JAVA_TIME_CHRONO, JAVA_TIME_FORMAT, JAVA_TIME_TEMPORAL, JAVA_TIME_ZONE, JAVA_NET, JAVA_TEXT,
969             JAVA_SQL, JAVA_SECURITY);
970 
971     @SafeVarargs
972     private static Class<?>[] addAll(final Class<?>[]... arrays) {
973         int newLen = 0;
974         for (final Class<?>[] array : arrays) {
975             newLen += array.length;
976         }
977         final Class<?>[] result = new Class<?>[newLen];
978         int i = 0;
979         for (final Class<?>[] array : arrays) {
980             System.arraycopy(array, 0, result, i, array.length);
981             i += array.length;
982         }
983         return result;
984     }
985 
986     public static Class<?>[] getAll() {
987         return ALL.clone();
988     }
989 }