Top Description Inners Fields Constructors Methods
nonapi.io.github.classgraph.scanspec

public Class ScanSpec

extends Object
Class Inheritance
Imports
java.io.InputStream, java.lang.reflect.Field, java.net.URI, .URL, java.nio.ByteBuffer, .MappedByteBuffer, java.nio.channels.FileChannel, java.util.ArrayList, .Collections, .HashSet, .List, .Set, io.github.classgraph.ClassGraph.ClasspathElementFilter, .ClassGraph.ClasspathElementURLFilter, .ClassInfo, .ModulePathInfo, .ScanResult, nonapi.io.github.classgraph.scanspec.AcceptReject.AcceptRejectLeafname, .AcceptReject.AcceptRejectPrefix, .AcceptReject.AcceptRejectWholeString, nonapi.io.github.classgraph.utils.LogNode

The scanning specification.

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static enum
ScanSpec.ScanSpecPathMatch

Whether a path is a descendant of a rejected path, or an ancestor or descendant of an accepted path.

Field Summary

Modifier and TypeField and Description
public transient List<ClassLoader>
addedClassLoaders

If non-null, specifies manually-added classloaders that should be searched after the context classloader(s).

public transient List<Object>
addedModuleLayers

If non-null, specifies manually-added ModuleLayers that should be searched after the visible ModuleLayers.

public Set<String>
allowedURLSchemes

URL schemes that are allowed in classpath elements (not counting the optional "jar:" prefix and/or "file:", which are automatically allowed).

public AcceptReject.AcceptRejectWholeString
classAcceptReject

Class accept/reject criteria (fully-qualified class names, with separator '.').

public AcceptReject.AcceptRejectWholeString
classfilePathAcceptReject

Classfile accept/reject criteria (path to classfiles, with separator '/', ending in ".class").

public AcceptReject.AcceptRejectWholeString
classPackageAcceptReject

Package containing accept/reject criteriaed classes (with separator '.').

public AcceptReject.AcceptRejectWholeString
classPackagePathAcceptReject

Path to accept/reject criteriaed classes (with separator '/').

public transient List<Object>
classpathElementFilters

If non-null, a list of filter operations to apply to classpath elements.

public AcceptReject.AcceptRejectWholeString
classpathElementResourcePathAcceptReject

Classpath element resource path accept/reject criteria.

public boolean
disableRuntimeInvisibleAnnotations

If true, don't scan runtime-invisible annotations (only scan annotations with RetentionPolicy.RUNTIME).

public boolean
enableAnnotationInfo

If true, enables the saving of annotation info (for class, field, method or method parameter annotations) during the scan.

public boolean
enableClassInfo

If true, scan classfile bytecodes, producing ClassInfo objects.

public boolean
enableExternalClasses

If true, allow external classes (classes outside of accepted packages) to be returned in the ScanResult, if they are directly referred to by an accepted class, as a superclass, implemented interface or annotation.

public boolean
enableFieldInfo

If true, enables the saving of field info during the scan.

public boolean
enableInterClassDependencies

If true, enables the determination of inter-class dependencies.

public boolean
enableMemoryMapping

If true, use a MappedByteBuffer rather than the FileChannel API to access file content.

public boolean
enableMethodInfo

If true, enables the saving of method info during the scan.

public boolean
enableMultiReleaseVersions

If true, all multi-release versions of a resource are found.

public boolean
enableStaticFinalFieldConstantInitializerValues

Enable the storing of constant initializer values for static final fields in ClassInfo objects.

public boolean
enableSystemJarsAndModules

If true, system jarfiles (rt.jar) and system packages and modules (java.*, jre.*, etc.) should be scanned .

public boolean
extendScanningUpwardsToExternalClasses

If true, when classes have superclasses, implemented interfaces or annotations that are external classes, those classes are also scanned.

public boolean
ignoreClassVisibility

If true, ignore class visibility.

public boolean
ignoreFieldVisibility

If true, ignore field visibility.

public boolean
ignoreMethodVisibility

If true, ignore method visibility.

public boolean
ignoreParentClassLoaders

If true, do not fetch paths from parent classloaders.

public boolean
ignoreParentModuleLayers

If true, do not scan module layers that are the parent of other module layers.

public boolean
initializeLoadedClasses

Whether to initialize classes when loading them.

public AcceptReject.AcceptRejectLeafname
jarAcceptReject

Jar accept/reject criteria (leafname only, ending in ".jar").

public AcceptReject.AcceptRejectLeafname
libOrExtJarAcceptReject

lib/ext jar accept/reject criteria (leafname only, ending in ".jar").

public int
maxBufferedJarRAMSize

The maximum size of an inner (nested) jar that has been deflated (i.e. compressed, not stored) within an outer jar, before it has to be spilled to disk rather than stored in a RAM-backed ByteBuffer when it is deflated, in order for the inner jar's entries to be read.

public AcceptReject.AcceptRejectWholeString
moduleAcceptReject

Module accept/reject criteria (with separator '.').

public ModulePathInfo
modulePathInfo

Commandline module path parameters.

public transient List<ClassLoader>
overrideClassLoaders

If non-null, this list of ClassLoaders will be searched instead of the visible/context ClassLoader(s).

public List<Object>
overrideClasspath

If non-null, specifies a list of classpath elements (String, URL or URI to use to override the default classpath.

public transient List<Object>
overrideModuleLayers

If non-null, this list of ModuleLayers will be searched instead of the visible ModuleLayers.

public AcceptReject.AcceptRejectWholeString
packageAcceptReject

Package accept/reject criteria (with separator '.').

public AcceptReject.AcceptRejectPrefix
packagePrefixAcceptReject

Package prefix accept/reject criteria, for recursive scanning (with separator '.', ending in '.').

public AcceptReject.AcceptRejectWholeString
pathAcceptReject

Path accept/reject criteria (with separator '/').

public AcceptReject.AcceptRejectPrefix
pathPrefixAcceptReject

Path prefix accept/reject criteria, for recursive scanning (with separator '/', ending in '/').

public boolean
removeTemporaryFilesAfterScan

If true, nested jarfiles (jarfiles within jarfiles) that are extracted during scanning are removed from their temporary directory (e.g. /tmp/ClassGraph-8JX2u4w) after the scan has completed.

public boolean
scanDirs

If true, scan directories.

public boolean
scanJars

If true, scan jarfiles.

public boolean
scanModules

If true, scan modules.

public boolean
scanNestedJars

If true, scan nested jarfiles (jarfiles within jarfiles).

Constructor Summary

AccessConstructor and Description
public
ScanSpec()

Constructor for deserialization.

Method Summary

Modifier and TypeMethod and Description
public void
addClassLoader(final ClassLoader
The classloader to add.
classLoader
)

Add a ClassLoader to the list of ClassLoaders to scan.

public void
addClasspathOverride(final Object
The classpath element to add as an override to the default classpath.
overrideClasspathElement
)

Override the automatically-detected classpath with a custom path.

public void
addModuleLayer(final Object
The additional ModuleLayer to scan. (The parameter is of type Object for backwards compatibility with JDK 7 and JDK 8, but the argument should be of type ModuleLayer.)
moduleLayer
)

Add a ModuleLayer to the list of ModuleLayers to scan.

public boolean

Returns:

true if the given relative path (for a classfile name, including ".class") matches a specifically-accepted (and non-rejected) classfile's relative path.
classfileIsSpecificallyAccepted
(final String
the relative path
relativePath
)

Returns true if the given relative path (for a classfile name, including ".class") matches a specifically-accepted (and non-rejected) classfile's relative path.

public boolean

Returns:

true if the class is specifically rejected, or is within a rejected package.
classOrPackageIsRejected
(final String
the class name
className
)

Returns true if the class is specifically rejected, or is within a rejected package.

public ScanSpec.ScanSpecPathMatch

Returns:

the ScanSpecPathMatch
dirAcceptMatchStatus
(final String
the relative path
relativePath
)

Returns true if the given directory path is a descendant of a rejected path, or an ancestor or descendant of an accepted path.

public void
enableURLScheme(final String
the scheme, e.g. "http".
scheme
)

Allow a specified URL scheme in classpath elements.

public void
filterClasspathElements(final Object
The classpath element filter to apply to all discovered classpath elements, to decide which should be scanned.
filterLambda
)

Add a classpath element filter.

private static boolean

Returns:

true if the argument is a ModuleLayer or a subclass of ModuleLayer.
isModuleLayer
(final Object
the module layer
moduleLayer
)

Return true if the argument is a ModuleLayer or a subclass of ModuleLayer.

public void
log(final LogNode
The LogNode to log to.
log
)

Write to log.

public void
overrideClassLoaders(final ClassLoader...
The classloaders to override the default context classloaders with.
overrideClassLoaders
)

Completely override the list of ClassLoaders to scan.

public void
overrideModuleLayers(final Object...
The ModuleLayers to scan instead of the automatically-detected ModuleLayers. (The parameter is of type Object[] for backwards compatibility with JDK 7 and JDK 8, but the argument should be of type ModuleLayer[].)
overrideModuleLayers
)

Completely override (and ignore) the visible ModuleLayers, and instead scan the requested ModuleLayers.

public void
sortPrefixes()

Sort prefixes to ensure correct accept/reject evaluation (see Issue #167).

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

addedClassLoadersback to summary
public transient List<ClassLoader> addedClassLoaders

If non-null, specifies manually-added classloaders that should be searched after the context classloader(s).

addedModuleLayersback to summary
public transient List<Object> addedModuleLayers

If non-null, specifies manually-added ModuleLayers that should be searched after the visible ModuleLayers.

allowedURLSchemesback to summary
public Set<String> allowedURLSchemes

URL schemes that are allowed in classpath elements (not counting the optional "jar:" prefix and/or "file:", which are automatically allowed).

classAcceptRejectback to summary
public AcceptReject.AcceptRejectWholeString classAcceptReject

Class accept/reject criteria (fully-qualified class names, with separator '.').

classfilePathAcceptRejectback to summary
public AcceptReject.AcceptRejectWholeString classfilePathAcceptReject

Classfile accept/reject criteria (path to classfiles, with separator '/', ending in ".class").

classPackageAcceptRejectback to summary
public AcceptReject.AcceptRejectWholeString classPackageAcceptReject

Package containing accept/reject criteriaed classes (with separator '.').

classPackagePathAcceptRejectback to summary
public AcceptReject.AcceptRejectWholeString classPackagePathAcceptReject

Path to accept/reject criteriaed classes (with separator '/').

classpathElementFiltersback to summary
public transient List<Object> classpathElementFilters

If non-null, a list of filter operations to apply to classpath elements.

classpathElementResourcePathAcceptRejectback to summary
public AcceptReject.AcceptRejectWholeString classpathElementResourcePathAcceptReject

Classpath element resource path accept/reject criteria.

disableRuntimeInvisibleAnnotationsback to summary
public boolean disableRuntimeInvisibleAnnotations

If true, don't scan runtime-invisible annotations (only scan annotations with RetentionPolicy.RUNTIME).

enableAnnotationInfoback to summary
public boolean enableAnnotationInfo

If true, enables the saving of annotation info (for class, field, method or method parameter annotations) during the scan. This information can be obtained using ClassInfo#getAnnotationInfo() etc. By default, annotation info is not scanned, for efficiency.

enableClassInfoback to summary
public boolean enableClassInfo

If true, scan classfile bytecodes, producing ClassInfo objects.

enableExternalClassesback to summary
public boolean enableExternalClasses

If true, allow external classes (classes outside of accepted packages) to be returned in the ScanResult, if they are directly referred to by an accepted class, as a superclass, implemented interface or annotation. Disabled by default.

enableFieldInfoback to summary
public boolean enableFieldInfo

If true, enables the saving of field info during the scan. This information can be obtained using ClassInfo#getFieldInfo(). By default, field info is not scanned, for efficiency.

enableInterClassDependenciesback to summary
public boolean enableInterClassDependencies

If true, enables the determination of inter-class dependencies.

enableMemoryMappingback to summary
public boolean enableMemoryMapping

If true, use a MappedByteBuffer rather than the FileChannel API to access file content.

enableMethodInfoback to summary
public boolean enableMethodInfo

If true, enables the saving of method info during the scan. This information can be obtained using ClassInfo#getMethodInfo(). By default, method info is not scanned, for efficiency.

enableMultiReleaseVersionsback to summary
public boolean enableMultiReleaseVersions

If true, all multi-release versions of a resource are found.

enableStaticFinalFieldConstantInitializerValuesback to summary
public boolean enableStaticFinalFieldConstantInitializerValues

Enable the storing of constant initializer values for static final fields in ClassInfo objects.

enableSystemJarsAndModulesback to summary
public boolean enableSystemJarsAndModules

If true, system jarfiles (rt.jar) and system packages and modules (java.*, jre.*, etc.) should be scanned .

extendScanningUpwardsToExternalClassesback to summary
public boolean extendScanningUpwardsToExternalClasses

If true, when classes have superclasses, implemented interfaces or annotations that are external classes, those classes are also scanned. (Even though this slows down scanning a bit, there is no API for disabling this currently, since disabling it can lead to problems -- see #261.)

ignoreClassVisibilityback to summary
public boolean ignoreClassVisibility

If true, ignore class visibility. If false, classes must be public to be scanned.

ignoreFieldVisibilityback to summary
public boolean ignoreFieldVisibility

If true, ignore field visibility. If false, fields must be public to be scanned.

ignoreMethodVisibilityback to summary
public boolean ignoreMethodVisibility

If true, ignore method visibility. If false, methods must be public to be scanned.

ignoreParentClassLoadersback to summary
public boolean ignoreParentClassLoaders

If true, do not fetch paths from parent classloaders.

ignoreParentModuleLayersback to summary
public boolean ignoreParentModuleLayers

If true, do not scan module layers that are the parent of other module layers.

initializeLoadedClassesback to summary
public boolean initializeLoadedClasses

Whether to initialize classes when loading them.

jarAcceptRejectback to summary
public AcceptReject.AcceptRejectLeafname jarAcceptReject

Jar accept/reject criteria (leafname only, ending in ".jar").

libOrExtJarAcceptRejectback to summary
public AcceptReject.AcceptRejectLeafname libOrExtJarAcceptReject

lib/ext jar accept/reject criteria (leafname only, ending in ".jar").

maxBufferedJarRAMSizeback to summary
public int maxBufferedJarRAMSize

The maximum size of an inner (nested) jar that has been deflated (i.e. compressed, not stored) within an outer jar, before it has to be spilled to disk rather than stored in a RAM-backed ByteBuffer when it is deflated, in order for the inner jar's entries to be read. (Note that this situation of having to deflate a nested jar to RAM or disk in order to read it is rare, because normally adding a jarfile to another jarfile will store the inner jar, rather than deflate it, because deflating a jarfile does not usually produce any further compression gains. If an inner jar is stored, not deflated, then its zip entries can be read directly using ClassGraph's own zipfile central directory parser, which can use file slicing to extract entries directly from stored nested jars.)

This is also the maximum size of a jar downloaded from an http:// or https:// classpath URL to RAM. Once this many bytes have been read from the URL's InputStream, then the RAM contents are spilled over to a temporary file on disk, and the rest of the content is downloaded to the temporary file. (This is also rare, because normally there are no http:// or https:// classpath entries.)

Default: 64MB (i.e. writing to disk is avoided wherever possible). Setting a lower max RAM size value will decrease ClassGraph's memory usage if either of the above rare situations occurs.

moduleAcceptRejectback to summary
public AcceptReject.AcceptRejectWholeString moduleAcceptReject

Module accept/reject criteria (with separator '.').

modulePathInfoback to summary
public ModulePathInfo modulePathInfo

Commandline module path parameters.

overrideClassLoadersback to summary
public transient List<ClassLoader> overrideClassLoaders

If non-null, this list of ClassLoaders will be searched instead of the visible/context ClassLoader(s). In particular, this causes ClassGraph to ignore the java.class.path system property.

overrideClasspathback to summary
public List<Object> overrideClasspath

If non-null, specifies a list of classpath elements (String, URL or URI to use to override the default classpath.

overrideModuleLayersback to summary
public transient List<Object> overrideModuleLayers

If non-null, this list of ModuleLayers will be searched instead of the visible ModuleLayers.

packageAcceptRejectback to summary
public AcceptReject.AcceptRejectWholeString packageAcceptReject

Package accept/reject criteria (with separator '.').

packagePrefixAcceptRejectback to summary
public AcceptReject.AcceptRejectPrefix packagePrefixAcceptReject

Package prefix accept/reject criteria, for recursive scanning (with separator '.', ending in '.').

pathAcceptRejectback to summary
public AcceptReject.AcceptRejectWholeString pathAcceptReject

Path accept/reject criteria (with separator '/').

pathPrefixAcceptRejectback to summary
public AcceptReject.AcceptRejectPrefix pathPrefixAcceptReject

Path prefix accept/reject criteria, for recursive scanning (with separator '/', ending in '/').

removeTemporaryFilesAfterScanback to summary
public boolean removeTemporaryFilesAfterScan

If true, nested jarfiles (jarfiles within jarfiles) that are extracted during scanning are removed from their temporary directory (e.g. /tmp/ClassGraph-8JX2u4w) after the scan has completed. If false, temporary files are removed by the ScanResult finalizer, or on JVM exit.

scanDirsback to summary
public boolean scanDirs

If true, scan directories.

scanJarsback to summary
public boolean scanJars

If true, scan jarfiles.

scanModulesback to summary
public boolean scanModules

If true, scan modules.

scanNestedJarsback to summary
public boolean scanNestedJars

If true, scan nested jarfiles (jarfiles within jarfiles).

Constructor Detail

ScanSpecback to summary
public ScanSpec()

Constructor for deserialization.

Method Detail

addClassLoaderback to summary
public void addClassLoader(final ClassLoader classLoader)

Add a ClassLoader to the list of ClassLoaders to scan. (This only works if overrideClasspath() is not called.)

Parameters
classLoader:ClassLoader

The classloader to add.

addClasspathOverrideback to summary
public void addClasspathOverride(final Object overrideClasspathElement)

Override the automatically-detected classpath with a custom path. You can specify multiple elements in separate calls, and if this method is called even once, the default classpath will be overridden, such that nothing but the provided classpath will be scanned, i.e. causes ClassLoaders to be ignored, as well as the java.class.path system property.

Parameters
overrideClasspathElement:Object

The classpath element to add as an override to the default classpath.

addModuleLayerback to summary
public void addModuleLayer(final Object moduleLayer)

Add a ModuleLayer to the list of ModuleLayers to scan. Use this method if you define your own ModuleLayer, but the scanning code is not running within that custom ModuleLayer.

This call is ignored if it is called before overrideModuleLayers(Object...).

Parameters
moduleLayer:Object

The additional ModuleLayer to scan. (The parameter is of type Object for backwards compatibility with JDK 7 and JDK 8, but the argument should be of type ModuleLayer.)

classfileIsSpecificallyAcceptedback to summary
public boolean classfileIsSpecificallyAccepted(final String relativePath)

Returns true if the given relative path (for a classfile name, including ".class") matches a specifically-accepted (and non-rejected) classfile's relative path.

Parameters
relativePath:String

the relative path

Returns:boolean

true if the given relative path (for a classfile name, including ".class") matches a specifically-accepted (and non-rejected) classfile's relative path.

classOrPackageIsRejectedback to summary
public boolean classOrPackageIsRejected(final String className)

Returns true if the class is specifically rejected, or is within a rejected package.

Parameters
className:String

the class name

Returns:boolean

true if the class is specifically rejected, or is within a rejected package.

dirAcceptMatchStatusback to summary
public ScanSpec.ScanSpecPathMatch dirAcceptMatchStatus(final String relativePath)

Returns true if the given directory path is a descendant of a rejected path, or an ancestor or descendant of an accepted path. The path should end in "/".

Parameters
relativePath:String

the relative path

Returns:ScanSpec.ScanSpecPathMatch

the ScanSpecPathMatch

enableURLSchemeback to summary
public void enableURLScheme(final String scheme)

Allow a specified URL scheme in classpath elements.

Parameters
scheme:String

the scheme, e.g. "http".

filterClasspathElementsback to summary
public void filterClasspathElements(final Object filterLambda)

Add a classpath element filter. The provided ClasspathElementFilter or ClasspathElementURLFilter should return true if the path string or URL passed to it is a path that should be scanned.

Parameters
filterLambda:Object

The classpath element filter to apply to all discovered classpath elements, to decide which should be scanned.

isModuleLayerback to summary
private static boolean isModuleLayer(final Object moduleLayer)

Return true if the argument is a ModuleLayer or a subclass of ModuleLayer.

Parameters
moduleLayer:Object

the module layer

Returns:boolean

true if the argument is a ModuleLayer or a subclass of ModuleLayer.

logback to summary
public void log(final LogNode log)

Write to log.

Parameters
log:LogNode

The LogNode to log to.

overrideClassLoadersback to summary
public void overrideClassLoaders(final ClassLoader... overrideClassLoaders)

Completely override the list of ClassLoaders to scan. (This only works if overrideClasspath() is not called.) Causes the java.class.path system property to be ignored.

Parameters
overrideClassLoaders:ClassLoader[]

The classloaders to override the default context classloaders with.

overrideModuleLayersback to summary
public void overrideModuleLayers(final Object... overrideModuleLayers)

Completely override (and ignore) the visible ModuleLayers, and instead scan the requested ModuleLayers.

This call is ignored if overrideClasspath() is called.

Parameters
overrideModuleLayers:Object[]

The ModuleLayers to scan instead of the automatically-detected ModuleLayers. (The parameter is of type Object[] for backwards compatibility with JDK 7 and JDK 8, but the argument should be of type ModuleLayer[].)

sortPrefixesback to summary
public void sortPrefixes()

Sort prefixes to ensure correct accept/reject evaluation (see Issue #167).

nonapi.io.github.classgraph.scanspec back to summary

public final Enum ScanSpec.ScanSpecPathMatch

extends Enum<ScanSpec.ScanSpecPathMatch>
Class Inheritance

Whether a path is a descendant of a rejected path, or an ancestor or descendant of an accepted path.

Field Summary

Modifier and TypeField and Description
public static final ScanSpec.ScanSpecPathMatch
ANCESTOR_OF_ACCEPTED_PATH

Path is an ancestor of an accepted path.

public static final ScanSpec.ScanSpecPathMatch
AT_ACCEPTED_CLASS_PACKAGE

Path is the package of a specifically-accepted class.

public static final ScanSpec.ScanSpecPathMatch
AT_ACCEPTED_PATH

Path is accepted.

public static final ScanSpec.ScanSpecPathMatch
HAS_ACCEPTED_PATH_PREFIX

Path starts with an accepted path prefix.

public static final ScanSpec.ScanSpecPathMatch
HAS_REJECTED_PATH_PREFIX

Path starts with (or is) a rejected path prefix.

public static final ScanSpec.ScanSpecPathMatch
NOT_WITHIN_ACCEPTED_PATH

Path is not accepted and not rejected.

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static ScanSpec.ScanSpecPathMatch
public static ScanSpec.ScanSpecPathMatch[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

ANCESTOR_OF_ACCEPTED_PATHback to summary
public static final ScanSpec.ScanSpecPathMatch ANCESTOR_OF_ACCEPTED_PATH

Path is an ancestor of an accepted path.

AT_ACCEPTED_CLASS_PACKAGEback to summary
public static final ScanSpec.ScanSpecPathMatch AT_ACCEPTED_CLASS_PACKAGE

Path is the package of a specifically-accepted class.

AT_ACCEPTED_PATHback to summary
public static final ScanSpec.ScanSpecPathMatch AT_ACCEPTED_PATH

Path is accepted.

HAS_ACCEPTED_PATH_PREFIXback to summary
public static final ScanSpec.ScanSpecPathMatch HAS_ACCEPTED_PATH_PREFIX

Path starts with an accepted path prefix.

HAS_REJECTED_PATH_PREFIXback to summary
public static final ScanSpec.ScanSpecPathMatch HAS_REJECTED_PATH_PREFIX

Path starts with (or is) a rejected path prefix.

NOT_WITHIN_ACCEPTED_PATHback to summary
public static final ScanSpec.ScanSpecPathMatch NOT_WITHIN_ACCEPTED_PATH

Path is not accepted and not rejected.

Constructor Detail

ScanSpecPathMatchback to summary
private ScanSpecPathMatch()

Method Detail

valueOfback to summary
public static ScanSpec.ScanSpecPathMatch valueOf(String name)
valuesback to summary
public static ScanSpec.ScanSpecPathMatch[] values()