* @return A valid class source for the given artifact
*/
protected ClassSource getClassSource (IClassPackageReference reference, IVirtualArtifact artifact) {
if (artifact instanceof IVirtualFile) {
if (artifact instanceof SystemFile && ArchiveUtil.isArchive((IVirtualFile)artifact));
return new ZipClassSource( ((SystemFile)artifact).getRealArtifact() );
} else if (artifact instanceof IVirtualDirectory) {
VirtualDirectoryClassSource cs = new VirtualDirectoryClassSource( (IVirtualDirectory) artifact );
cs.setManifest( ClassPackageUtil.createVirtualManifest(reference) );
return cs;
}