com.sun.tools.javac.file
Class JavacFileManager

java.lang.Object
  extended by com.sun.tools.javac.file.JavacFileManager
All Implemented Interfaces:
java.io.Closeable, java.io.Flushable, JavaFileManager, OptionChecker, StandardJavaFileManager
Direct Known Subclasses:
JavapFileManager

public class JavacFileManager
extends java.lang.Object
implements StandardJavaFileManager

This class provides access to the source, class and other files used by the compiler and related tools.


Nested Class Summary
static interface JavacFileManager.Archive
          An archive provides a flat directory structure of a ZipFile by mapping directory names to lists of files (basenames).
private static class JavacFileManager.ByteBufferCache
          A single-element cache of direct byte buffers.
 class JavacFileManager.MissingArchive
           
 
Nested classes/interfaces inherited from interface javax.tools.JavaFileManager
JavaFileManager.Location
 
Field Summary
(package private)  java.util.Map<java.io.File,JavacFileManager.Archive> archives
          A directory of zip files already opened.
private  JavacFileManager.ByteBufferCache byteBufferCache
           
protected  java.nio.charset.Charset charset
          User provided charset (through javax.tools).
private  java.io.File classOutDir
          The standard output directory, primarily used for classes.
private  java.util.Map<JavaFileObject,java.lang.ref.SoftReference<java.nio.CharBuffer>> contentCache
           
private  java.lang.String defaultEncodingName
           
private static boolean fileSystemIsCaseSensitive
           
private  FSInfo fsInfo
           
protected  boolean ignoreSymbolFile
           
private static JavacOption[] javacFileManagerOptions
           
protected  Log log
          The log to be used for error reporting.
protected  boolean mmappedIO
           
private  Options options
           
private  Paths paths
          Encapsulates knowledge of paths
private  java.util.Set<JavaFileObject.Kind> sourceOrClass
           
private  java.io.File sourceOutDir
          The output directory, used when generating sources while processing annotations.
private static java.lang.String[] symbolFileLocation
           
private static RelativePath.RelativeDirectory symbolFilePrefix
           
private  java.io.File uninited
           
(package private)  boolean useZipFileIndex
           
 
Constructor Summary
JavacFileManager(Context context, boolean register, java.nio.charset.Charset charset)
          Create a JavacFileManager using a given context, optionally registering it as the JavaFileManager for that context.
 
Method Summary
(package private)  void cache(JavaFileObject file, java.nio.CharBuffer cb)
           
private  boolean caseMapCheck(java.io.File f, RelativePath name)
          Hack to make Windows case sensitive.
 void close()
          Close the JavaFileManager, releasing resources.
(package private)  java.nio.CharBuffer decode(java.nio.ByteBuffer inbuf, boolean ignoreEncodingErrors)
          Decode a ByteBuffer into a CharBuffer.
 void flush()
          Flush any output resources.
(package private)  java.nio.CharBuffer getCachedContent(JavaFileObject file)
           
 java.lang.ClassLoader getClassLoader(JavaFileManager.Location location)
          Gets a class loader for loading plug-ins from the given location.
private  java.io.File getClassOutDir()
           
(package private)  java.nio.charset.CharsetDecoder getDecoder(java.lang.String encodingName, boolean ignoreEncodingErrors)
           
private  java.lang.String getDefaultEncodingName()
           
protected  java.lang.String getEncodingName()
           
private  JavaFileObject getFileForInput(JavaFileManager.Location location, RelativePath.RelativeFile name)
           
 FileObject getFileForInput(JavaFileManager.Location location, java.lang.String packageName, java.lang.String relativeName)
          Gets a file object for input representing the specified relative name in the specified package in the given location.
 JavaFileObject getFileForInput(java.lang.String name)
           
private  JavaFileObject getFileForOutput(JavaFileManager.Location location, RelativePath.RelativeFile fileName, FileObject sibling)
           
 FileObject getFileForOutput(JavaFileManager.Location location, java.lang.String packageName, java.lang.String relativeName, FileObject sibling)
          Gets a file object for output representing the specified relative name in the specified package in the given location.
 JavaFileObject getFileForOutput(java.lang.String classname, JavaFileObject.Kind kind, JavaFileObject sibling)
           
static java.lang.String getJavacBaseFileName(FileObject file)
           
static java.lang.String getJavacFileName(FileObject file)
           
 JavaFileObject getJavaFileForInput(JavaFileManager.Location location, java.lang.String className, JavaFileObject.Kind kind)
          Gets a file object for input representing the specified class of the specified kind in the given location.
 JavaFileObject getJavaFileForOutput(JavaFileManager.Location location, java.lang.String className, JavaFileObject.Kind kind, FileObject sibling)
          Gets a file object for output representing the specified class of the specified kind in the given location.
 java.lang.Iterable<? extends JavaFileObject> getJavaFileObjects(java.io.File... files)
          Gets file objects representing the given files.
 java.lang.Iterable<? extends JavaFileObject> getJavaFileObjects(java.lang.String... names)
          Gets file objects representing the given file names.
 java.lang.Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(java.lang.Iterable<? extends java.io.File> files)
          Gets file objects representing the given files.
 java.lang.Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(java.lang.Iterable<java.lang.String> names)
          Gets file objects representing the given file names.
protected  JavaFileObject.Kind getKind(java.lang.String extension)
           
 java.lang.Iterable<? extends java.io.File> getLocation(JavaFileManager.Location location)
          Gets the path associated with the given location.
private  java.io.File getOutputDirectory(java.lang.Iterable<? extends java.io.File> path)
           
private  java.io.File getOutputLocation(java.io.File dir, OptionName defaultOptionName)
           
 JavaFileObject getRegularFile(java.io.File file)
           
static java.lang.String getRelativeName(java.io.File file)
          Converts a relative file name to a relative URI.
protected  Source getSource()
           
private  java.io.File getSourceOutDir()
           
 boolean handleOption(java.lang.String current, java.util.Iterator<java.lang.String> remaining)
          Handles one option.
 boolean hasLocation(JavaFileManager.Location location)
          Determines if a location is known to this file manager.
 java.lang.String inferBinaryName(JavaFileManager.Location location, JavaFileObject file)
          Infers a binary name of a file object based on a location.
protected static boolean isRelativeUri(java.net.URI uri)
          Enforces the specification of a "relative" URI as used in getFileForInput.
 boolean isSameFile(FileObject a, FileObject b)
          Compares two file objects and return true if they represent the same underlying object.
 int isSupportedOption(java.lang.String option)
          Determines if the given option is supported and if so, the number of arguments the option takes.
private  boolean isValidFile(java.lang.String s, java.util.Set<JavaFileObject.Kind> fileKinds)
           
private static boolean isValidName(java.lang.String name)
           
 java.lang.Iterable<JavaFileObject> list(JavaFileManager.Location location, java.lang.String packageName, java.util.Set<JavaFileObject.Kind> kinds, boolean recurse)
          Lists all file objects matching the given criteria in the given location.
private  void listDirectory(java.io.File directory, RelativePath.RelativeDirectory subdirectory, java.util.Set<JavaFileObject.Kind> fileKinds, boolean recurse, ListBuffer<JavaFileObject> l)
          Insert all files in subdirectory `subdirectory' of `directory' which end in one of the extensions in `extensions' into packageSym.
(package private)  java.nio.ByteBuffer makeByteBuffer(java.io.InputStream in)
          Make a byte buffer from an input stream.
private static
<T> java.lang.Iterable<T>
nullCheck(java.lang.Iterable<T> it)
           
private static
<T> T
nullCheck(T o)
           
protected  JavacFileManager.Archive openArchive(java.io.File zipFileName)
          Open a new zip file directory.
static void preRegister(Context context)
          Register a Context.Factory to create a JavacFileManager.
private static void printAscii(java.lang.String format, java.lang.Object... args)
           
(package private)  void recycleByteBuffer(java.nio.ByteBuffer bb)
           
 void setContext(Context context)
          Set the context for JavacFileManager.
 void setLocation(JavaFileManager.Location location, java.lang.Iterable<? extends java.io.File> path)
          Associates the given path with the given location.
static void testName(java.lang.String name, boolean isValidPackageName, boolean isValidClassName)
           
static char[] toArray(java.nio.CharBuffer buffer)
           
private static void validateClassName(java.lang.String className)
           
private static void validatePackageName(java.lang.String packageName)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

useZipFileIndex

boolean useZipFileIndex

log

protected Log log
The log to be used for error reporting.


paths

private Paths paths
Encapsulates knowledge of paths


options

private Options options

fsInfo

private FSInfo fsInfo

uninited

private final java.io.File uninited

sourceOrClass

private final java.util.Set<JavaFileObject.Kind> sourceOrClass

classOutDir

private java.io.File classOutDir
The standard output directory, primarily used for classes. Initialized by the "-d" option. If classOutDir = null, files are written into same directory as the sources they were generated from.


sourceOutDir

private java.io.File sourceOutDir
The output directory, used when generating sources while processing annotations. Initialized by the "-s" option.


mmappedIO

protected boolean mmappedIO

ignoreSymbolFile

protected boolean ignoreSymbolFile

charset

protected java.nio.charset.Charset charset
User provided charset (through javax.tools).


fileSystemIsCaseSensitive

private static final boolean fileSystemIsCaseSensitive

archives

java.util.Map<java.io.File,JavacFileManager.Archive> archives
A directory of zip files already opened.


symbolFileLocation

private static final java.lang.String[] symbolFileLocation

symbolFilePrefix

private static final RelativePath.RelativeDirectory symbolFilePrefix

contentCache

private final java.util.Map<JavaFileObject,java.lang.ref.SoftReference<java.nio.CharBuffer>> contentCache

defaultEncodingName

private java.lang.String defaultEncodingName

byteBufferCache

private final JavacFileManager.ByteBufferCache byteBufferCache

javacFileManagerOptions

private static JavacOption[] javacFileManagerOptions
Constructor Detail

JavacFileManager

public JavacFileManager(Context context,
                        boolean register,
                        java.nio.charset.Charset charset)
Create a JavacFileManager using a given context, optionally registering it as the JavaFileManager for that context.

Method Detail

toArray

public static char[] toArray(java.nio.CharBuffer buffer)

preRegister

public static void preRegister(Context context)
Register a Context.Factory to create a JavacFileManager.


setContext

public void setContext(Context context)
Set the context for JavacFileManager.


getFileForInput

public JavaFileObject getFileForInput(java.lang.String name)

getRegularFile

public JavaFileObject getRegularFile(java.io.File file)

getFileForOutput

public JavaFileObject getFileForOutput(java.lang.String classname,
                                       JavaFileObject.Kind kind,
                                       JavaFileObject sibling)
                                throws java.io.IOException
Throws:
java.io.IOException

getJavaFileObjectsFromStrings

public java.lang.Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(java.lang.Iterable<java.lang.String> names)
Description copied from interface: StandardJavaFileManager
Gets file objects representing the given file names.

Specified by:
getJavaFileObjectsFromStrings in interface StandardJavaFileManager
Parameters:
names - a list of file names
Returns:
a list of file objects

getJavaFileObjects

public java.lang.Iterable<? extends JavaFileObject> getJavaFileObjects(java.lang.String... names)
Description copied from interface: StandardJavaFileManager
Gets file objects representing the given file names. Convenience method equivalent to:
     getJavaFileObjectsFromStrings(Arrays.asList(names))
 

Specified by:
getJavaFileObjects in interface StandardJavaFileManager
Parameters:
names - a list of file names
Returns:
a list of file objects

getKind

protected JavaFileObject.Kind getKind(java.lang.String extension)

isValidName

private static boolean isValidName(java.lang.String name)

validateClassName

private static void validateClassName(java.lang.String className)

validatePackageName

private static void validatePackageName(java.lang.String packageName)

testName

public static void testName(java.lang.String name,
                            boolean isValidPackageName,
                            boolean isValidClassName)

printAscii

private static void printAscii(java.lang.String format,
                               java.lang.Object... args)

listDirectory

private void listDirectory(java.io.File directory,
                           RelativePath.RelativeDirectory subdirectory,
                           java.util.Set<JavaFileObject.Kind> fileKinds,
                           boolean recurse,
                           ListBuffer<JavaFileObject> l)
Insert all files in subdirectory `subdirectory' of `directory' which end in one of the extensions in `extensions' into packageSym.


isValidFile

private boolean isValidFile(java.lang.String s,
                            java.util.Set<JavaFileObject.Kind> fileKinds)

caseMapCheck

private boolean caseMapCheck(java.io.File f,
                             RelativePath name)
Hack to make Windows case sensitive. Test whether given path ends in a string of characters with the same case as given name. Ignore file separators in both path and name.


openArchive

protected JavacFileManager.Archive openArchive(java.io.File zipFileName)
                                        throws java.io.IOException
Open a new zip file directory.

Throws:
java.io.IOException

flush

public void flush()
Flush any output resources.

Specified by:
flush in interface java.io.Flushable
Specified by:
flush in interface JavaFileManager
See Also:
JavaFileManager.close()

close

public void close()
Close the JavaFileManager, releasing resources.

Specified by:
close in interface java.io.Closeable
Specified by:
close in interface JavaFileManager
See Also:
JavaFileManager.flush()

getCachedContent

java.nio.CharBuffer getCachedContent(JavaFileObject file)

cache

void cache(JavaFileObject file,
           java.nio.CharBuffer cb)

getDefaultEncodingName

private java.lang.String getDefaultEncodingName()

getEncodingName

protected java.lang.String getEncodingName()

getSource

protected Source getSource()

makeByteBuffer

java.nio.ByteBuffer makeByteBuffer(java.io.InputStream in)
                             throws java.io.IOException
Make a byte buffer from an input stream.

Throws:
java.io.IOException

recycleByteBuffer

void recycleByteBuffer(java.nio.ByteBuffer bb)

getDecoder

java.nio.charset.CharsetDecoder getDecoder(java.lang.String encodingName,
                                           boolean ignoreEncodingErrors)

decode

java.nio.CharBuffer decode(java.nio.ByteBuffer inbuf,
                           boolean ignoreEncodingErrors)
Decode a ByteBuffer into a CharBuffer.


getClassLoader

public java.lang.ClassLoader getClassLoader(JavaFileManager.Location location)
Description copied from interface: JavaFileManager
Gets a class loader for loading plug-ins from the given location. For example, to load annotation processors, a compiler will request a class loader for the ANNOTATION_PROCESSOR_PATH location.

Specified by:
getClassLoader in interface JavaFileManager
Parameters:
location - a location
Returns:
a class loader for the given location; or null if loading plug-ins from the given location is disabled or if the location is not known

list

public java.lang.Iterable<JavaFileObject> list(JavaFileManager.Location location,
                                               java.lang.String packageName,
                                               java.util.Set<JavaFileObject.Kind> kinds,
                                               boolean recurse)
                                        throws java.io.IOException
Description copied from interface: JavaFileManager
Lists all file objects matching the given criteria in the given location. List file objects in "subpackages" if recurse is true.

Note: even if the given location is unknown to this file manager, it may not return null. Also, an unknown location may not cause an exception.

Specified by:
list in interface JavaFileManager
Parameters:
location - a location
packageName - a package name
kinds - return objects only of these kinds
recurse - if true include "subpackages"
Returns:
an Iterable of file objects matching the given criteria
Throws:
java.io.IOException - if an I/O error occurred, or if JavaFileManager.close() has been called and this file manager cannot be reopened

inferBinaryName

public java.lang.String inferBinaryName(JavaFileManager.Location location,
                                        JavaFileObject file)
Description copied from interface: JavaFileManager
Infers a binary name of a file object based on a location. The binary name returned might not be a valid JLS binary name.

Specified by:
inferBinaryName in interface JavaFileManager
Parameters:
location - a location
file - a file object
Returns:
a binary name or null the file object is not found in the given location

isSameFile

public boolean isSameFile(FileObject a,
                          FileObject b)
Description copied from interface: JavaFileManager
Compares two file objects and return true if they represent the same underlying object.

Specified by:
isSameFile in interface JavaFileManager
Specified by:
isSameFile in interface StandardJavaFileManager
Parameters:
a - a file object
b - a file object
Returns:
true if the given file objects represent the same underlying object

handleOption

public boolean handleOption(java.lang.String current,
                            java.util.Iterator<java.lang.String> remaining)
Description copied from interface: JavaFileManager
Handles one option. If current is an option to this file manager it will consume any arguments to that option from remaining and return true, otherwise return false.

Specified by:
handleOption in interface JavaFileManager
Parameters:
current - current option
remaining - remaining options
Returns:
true if this option was handled by this file manager, false otherwise

isSupportedOption

public int isSupportedOption(java.lang.String option)
Description copied from interface: OptionChecker
Determines if the given option is supported and if so, the number of arguments the option takes.

Specified by:
isSupportedOption in interface OptionChecker
Parameters:
option - an option
Returns:
the number of arguments the given option takes or -1 if the option is not supported

hasLocation

public boolean hasLocation(JavaFileManager.Location location)
Description copied from interface: JavaFileManager
Determines if a location is known to this file manager.

Specified by:
hasLocation in interface JavaFileManager
Parameters:
location - a location
Returns:
true if the location is known

getJavaFileForInput

public JavaFileObject getJavaFileForInput(JavaFileManager.Location location,
                                          java.lang.String className,
                                          JavaFileObject.Kind kind)
                                   throws java.io.IOException
Description copied from interface: JavaFileManager
Gets a file object for input representing the specified class of the specified kind in the given location.

Specified by:
getJavaFileForInput in interface JavaFileManager
Parameters:
location - a location
className - the name of a class
kind - the kind of file, must be one of SOURCE or CLASS
Returns:
a file object, might return null if the file does not exist
Throws:
java.io.IOException - if an I/O error occurred, or if JavaFileManager.close() has been called and this file manager cannot be reopened

getFileForInput

public FileObject getFileForInput(JavaFileManager.Location location,
                                  java.lang.String packageName,
                                  java.lang.String relativeName)
                           throws java.io.IOException
Description copied from interface: JavaFileManager
Gets a file object for input representing the specified relative name in the specified package in the given location.

If the returned object represents a source or class file, it must be an instance of JavaFileObject.

Informally, the file object returned by this method is located in the concatenation of the location, package name, and relative name. For example, to locate the properties file "resources/compiler.properties" in the package "com.sun.tools.javac" in the SOURCE_PATH location, this method might be called like so:

getFileForInput(SOURCE_PATH, "com.sun.tools.javac", "resources/compiler.properties");

If the call was executed on Windows, with SOURCE_PATH set to "C:\Documents and Settings\UncleBob\src\share\classes", a valid result would be a file object representing the file "C:\Documents and Settings\UncleBob\src\share\classes\com\sun\tools\javac\resources\compiler.properties".

Specified by:
getFileForInput in interface JavaFileManager
Parameters:
location - a location
packageName - a package name
relativeName - a relative name
Returns:
a file object, might return null if the file does not exist
Throws:
java.io.IOException - if an I/O error occurred, or if JavaFileManager.close() has been called and this file manager cannot be reopened

getFileForInput

private JavaFileObject getFileForInput(JavaFileManager.Location location,
                                       RelativePath.RelativeFile name)
                                throws java.io.IOException
Throws:
java.io.IOException

getJavaFileForOutput

public JavaFileObject getJavaFileForOutput(JavaFileManager.Location location,
                                           java.lang.String className,
                                           JavaFileObject.Kind kind,
                                           FileObject sibling)
                                    throws java.io.IOException
Description copied from interface: JavaFileManager
Gets a file object for output representing the specified class of the specified kind in the given location.

Optionally, this file manager might consider the sibling as a hint for where to place the output. The exact semantics of this hint is unspecified. Sun's compiler, javac, for example, will place class files in the same directories as originating source files unless a class file output directory is provided. To facilitate this behavior, javac might provide the originating source file as sibling when calling this method.

Specified by:
getJavaFileForOutput in interface JavaFileManager
Parameters:
location - a location
className - the name of a class
kind - the kind of file, must be one of SOURCE or CLASS
sibling - a file object to be used as hint for placement; might be null
Returns:
a file object for output
Throws:
java.io.IOException - if an I/O error occurred, or if JavaFileManager.close() has been called and this file manager cannot be reopened

getFileForOutput

public FileObject getFileForOutput(JavaFileManager.Location location,
                                   java.lang.String packageName,
                                   java.lang.String relativeName,
                                   FileObject sibling)
                            throws java.io.IOException
Description copied from interface: JavaFileManager
Gets a file object for output representing the specified relative name in the specified package in the given location.

Optionally, this file manager might consider the sibling as a hint for where to place the output. The exact semantics of this hint is unspecified. Sun's compiler, javac, for example, will place class files in the same directories as originating source files unless a class file output directory is provided. To facilitate this behavior, javac might provide the originating source file as sibling when calling this method.

If the returned object represents a source or class file, it must be an instance of JavaFileObject.

Informally, the file object returned by this method is located in the concatenation of the location, package name, and relative name or next to the sibling argument. See getFileForInput for an example.

Specified by:
getFileForOutput in interface JavaFileManager
Parameters:
location - a location
packageName - a package name
relativeName - a relative name
sibling - a file object to be used as hint for placement; might be null
Returns:
a file object
Throws:
java.io.IOException - if an I/O error occurred, or if JavaFileManager.close() has been called and this file manager cannot be reopened

getFileForOutput

private JavaFileObject getFileForOutput(JavaFileManager.Location location,
                                        RelativePath.RelativeFile fileName,
                                        FileObject sibling)
                                 throws java.io.IOException
Throws:
java.io.IOException

getJavaFileObjectsFromFiles

public java.lang.Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(java.lang.Iterable<? extends java.io.File> files)
Description copied from interface: StandardJavaFileManager
Gets file objects representing the given files.

Specified by:
getJavaFileObjectsFromFiles in interface StandardJavaFileManager
Parameters:
files - a list of files
Returns:
a list of file objects

getJavaFileObjects

public java.lang.Iterable<? extends JavaFileObject> getJavaFileObjects(java.io.File... files)
Description copied from interface: StandardJavaFileManager
Gets file objects representing the given files. Convenience method equivalent to:
     getJavaFileObjectsFromFiles(Arrays.asList(files))
 

Specified by:
getJavaFileObjects in interface StandardJavaFileManager
Parameters:
files - an array of files
Returns:
a list of file objects

setLocation

public void setLocation(JavaFileManager.Location location,
                        java.lang.Iterable<? extends java.io.File> path)
                 throws java.io.IOException
Description copied from interface: StandardJavaFileManager
Associates the given path with the given location. Any previous value will be discarded.

Specified by:
setLocation in interface StandardJavaFileManager
Parameters:
location - a location
path - a list of files, if null use the default path for this location
Throws:
java.io.IOException - if location is an output location and path does not represent an existing directory
See Also:
StandardJavaFileManager.getLocation(javax.tools.JavaFileManager.Location)

getOutputDirectory

private java.io.File getOutputDirectory(java.lang.Iterable<? extends java.io.File> path)
                                 throws java.io.IOException
Throws:
java.io.IOException

getOutputLocation

private java.io.File getOutputLocation(java.io.File dir,
                                       OptionName defaultOptionName)

getLocation

public java.lang.Iterable<? extends java.io.File> getLocation(JavaFileManager.Location location)
Description copied from interface: StandardJavaFileManager
Gets the path associated with the given location.

Specified by:
getLocation in interface StandardJavaFileManager
Parameters:
location - a location
Returns:
a list of files or null if this location has no associated path
See Also:
StandardJavaFileManager.setLocation(javax.tools.JavaFileManager.Location, java.lang.Iterable)

getClassOutDir

private java.io.File getClassOutDir()

getSourceOutDir

private java.io.File getSourceOutDir()

isRelativeUri

protected static boolean isRelativeUri(java.net.URI uri)
Enforces the specification of a "relative" URI as used in getFileForInput. This method must follow the rules defined in that method, do not make any changes without consulting the specification.


getRelativeName

public static java.lang.String getRelativeName(java.io.File file)
Converts a relative file name to a relative URI. This is different from File.toURI as this method does not canonicalize the file before creating the URI. Furthermore, no schema is used.

Parameters:
file - a relative file name
Returns:
a relative URI
Throws:
java.lang.IllegalArgumentException - if the file name is not relative according to the definition given in JavaFileManager.getFileForInput(javax.tools.JavaFileManager.Location, java.lang.String, java.lang.String)

getJavacFileName

public static java.lang.String getJavacFileName(FileObject file)

getJavacBaseFileName

public static java.lang.String getJavacBaseFileName(FileObject file)

nullCheck

private static <T> T nullCheck(T o)

nullCheck

private static <T> java.lang.Iterable<T> nullCheck(java.lang.Iterable<T> it)