// Path: src/main/java/com/pureperfect/ferret/ScanException.java
// public class ScanException extends RuntimeException
// {
// 	private static final long serialVersionUID = 1L;
// 
// 	/**
// 	 * The underlying cause.
// 	 * 
// 	 * @param cause
// 	 *            The underlying cause
// 	 */
// 	public ScanException(final Throwable cause)
// 	{
// 		super(cause);
// 	}
// }


import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.zip.ZipEntry;
import com.pureperfect.ferret.ScanException;
	 * @return an instance of the file system
	 */
	public static FileSystem getInstance()
	{
		return singleton;
	}

	/**
	 * Get the appropriate type of resource for the file.
	 * 
	 * @param parent
	 *            the parent directory if applicable. This can be null
	 * @param file
	 *            the file
	 * @return the virtual resource
	 */
	public PathElement getVirtualPath(Directory parent, File file)
	{
		if (file.isDirectory())
		{
			return new ImplDirectory(parent, file);
		}
		else if (isArchive(file))
		{
			try
			{
				return new ImplArchive(parent, file.toURI().toURL());
			}
			catch (MalformedURLException e)
			{
// Path: src/main/java/com/pureperfect/ferret/ScanException.java
// public class ScanException extends RuntimeException
// {
// 	private static final long serialVersionUID = 1L;
// 
// 	/**
// 	 * The underlying cause.
// 	 * 
// 	 * @param cause
// 	 *            The underlying cause
// 	 */
// 	public ScanException(final Throwable cause)
// 	{
// 		super(cause);
// 	}
// }


// Path: src/main/java/com/pureperfect/ferret/vfs/FileSystem.java
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.zip.ZipEntry;
import com.pureperfect.ferret.ScanException;

	 * @return an instance of the file system
	 */
	public static FileSystem getInstance()
	{
		return singleton;
	}

	/**
	 * Get the appropriate type of resource for the file.
	 * 
	 * @param parent
	 *            the parent directory if applicable. This can be null
	 * @param file
	 *            the file
	 * @return the virtual resource
	 */
	public PathElement getVirtualPath(Directory parent, File file)
	{
		if (file.isDirectory())
		{
			return new ImplDirectory(parent, file);
		}
		else if (isArchive(file))
		{
			try
			{
				return new ImplArchive(parent, file.toURI().toURL());
			}
			catch (MalformedURLException e)
			{
				throw new ScanException(e);