/* sbt -- Simple Build Tool
 * Copyright 2008, 2009 Mark Harrah, David MacIver
 */
package sbt

import FileUtilities._
import java.io.File
import java.util.jar.{Attributes, Manifest}

trait trait ScalaProject extends java.lang.Object with sbt.Project with sbt.FileTasks with ScalaObjectScalaProject extends sbt.ProjectProject with sbt.FileTasksFileTasks
{
	import ScalaProject._
	
	def (String)ScalaProject.this.TaskerrorTask(Stringmessage: StringString) = (=> Option[String])ScalaProject.this.Tasktask{ (String)Some[String]Some(Stringmessage) }
	
	case class class CompileOption extends java.lang.Object with ScalaProject.this.ActionOption with ScalaObject with ProductCompileOption(val StringasString: StringString) extends ScalaProject.this.ActionOptionActionOption
	trait trait PackageOption extends java.lang.Object with ScalaProject.this.ActionOptionPackageOption extends ScalaProject.this.ActionOptionActionOption
	trait trait TestOption extends java.lang.Object with ScalaProject.this.ActionOptionTestOption extends ScalaProject.this.ActionOptionActionOption
	trait trait CleanOption extends java.lang.Object with ScalaProject.this.ActionOptionCleanOption extends ScalaProject.this.ActionOptionActionOption
	case class class ClearAnalysis extends java.lang.Object with ScalaProject.this.CleanOption with ScalaObject with ProductClearAnalysis(sbt.TaskAnalysis[_, _, _]analysis: sbt.TaskAnalysis[_, _, _]TaskAnalysis[_, _, _]) extends ScalaProject.this.CleanOptionCleanOption
	
	case class class ExcludeTests extends java.lang.Object with ScalaProject.this.TestOption with ScalaObject with ProductExcludeTests(Iterable[String]tests: Iterable[String]Iterable[String]) extends ScalaProject.this.TestOptionTestOption
	case class class TestListeners extends java.lang.Object with ScalaProject.this.TestOption with ScalaObject with ProductTestListeners(Iterable[sbt.TestReportListener]listeners: Iterable[sbt.TestReportListener]Iterable[TestReportListener]) extends ScalaProject.this.TestOptionTestOption
	case class class TestFilter extends java.lang.Object with ScalaProject.this.TestOption with ScalaObject with ProductTestFilter((String) => BooleanfilterTest: String => Boolean) extends ScalaProject.this.TestOptionTestOption
	
	case class class JarManifest extends java.lang.Object with ScalaProject.this.PackageOption with ScalaObject with ProductJarManifest(java.util.jar.Manifestm: java.util.jar.ManifestManifest) extends ScalaProject.this.PackageOptionPackageOption
	{
		(Boolean)Unitassert(=> java.util.jar.Manifestm (AnyRef)Boolean!= Null(null)null)
	}
	case class class MainClass extends java.lang.Object with ScalaProject.this.PackageOption with ScalaObject with ProductMainClass(StringmainClassName: StringString) extends ScalaProject.this.PackageOptionPackageOption
	case object object ScalaProject.this.RecursiveRecursive extends ScalaProject.this.PackageOptionPackageOption
	
	val ScalaProject.this.CompileOptionDeprecation = (String)ScalaProject.this.CompileOptionCompileOption(java.lang.String("-deprecation")"-deprecation")
	val ScalaProject.this.CompileOptionExplainTypes = (String)ScalaProject.this.CompileOptionCompileOption(java.lang.String("-explaintypes")"-explaintypes")
	val ScalaProject.this.CompileOptionOptimize = (String)ScalaProject.this.CompileOptionCompileOption(java.lang.String("-optimise")"-optimise")
	def => ScalaProject.this.CompileOptionOptimise = => ScalaProject.this.CompileOptionOptimize
	val ScalaProject.this.CompileOptionVerbose = (String)ScalaProject.this.CompileOptionCompileOption(java.lang.String("-verbose")"-verbose")
	val ScalaProject.this.CompileOptionUnchecked = (String)ScalaProject.this.CompileOptionCompileOption(java.lang.String("-unchecked")"-unchecked")
	val ScalaProject.this.CompileOptionDisableWarnings = (String)ScalaProject.this.CompileOptionCompileOption(java.lang.String("-nowarn")"-nowarn")
	def (ScalaProject.this.Target.Value)ScalaProject.this.CompileOptiontarget(ScalaProject.this.Target.Valuetarget: Target.ScalaProject.this.Target.ValueValue) = (String)ScalaProject.this.CompileOptionCompileOption(java.lang.String("-target:")"-target:" (Any)java.lang.String+ ScalaProject.this.Target.Valuetarget)
	object object ScalaProject.this.TargetTarget extends EnumerationEnumeration
	{
		val sbt.ScalaProject.Target.ValueJava1_5 = (String)sbt.ScalaProject.Target.ValueValue(java.lang.String("jvm-1.5")"jvm-1.5")
		val sbt.ScalaProject.Target.ValueJava1_4 = (String)sbt.ScalaProject.Target.ValueValue(java.lang.String("jvm-1.4")"jvm-1.4")
		val sbt.ScalaProject.Target.ValueMsil = (String)sbt.ScalaProject.Target.ValueValue(java.lang.String("msil")"msil")
	}
	
	trait trait ScaladocOption extends java.lang.Object with ScalaProject.this.ActionOptionScaladocOption extends ScalaProject.this.ActionOptionActionOption
	{
		def => List[String]asList: List[String]List[String]
	}
	case class class SimpleDocOption extends java.lang.Object with ScalaProject.this.ScaladocOption with ScalaObject with ProductSimpleDocOption(StringoptionValue: StringString) extends ScalaProject.this.ScaladocOptionScaladocOption
	{
		def => List[String]asList = (String*)List[String]List(=> StringoptionValue)
	}
	case class class CompoundDocOption extends java.lang.Object with ScalaProject.this.ScaladocOption with ScalaObject with ProductCompoundDocOption(Stringlabel: StringString, Stringvalue: StringString) extends ScalaProject.this.ScaladocOptionScaladocOption
	{
		def => List[String]asList = (String*)List[String]List(=> Stringlabel, => Stringvalue)
	}
	val ScalaProject.this.SimpleDocOptionLinkSource = (String)ScalaProject.this.SimpleDocOptionSimpleDocOption(java.lang.String("-linksource")"-linksource")
	val ScalaProject.this.SimpleDocOptionNoComment = (String)ScalaProject.this.SimpleDocOptionSimpleDocOption(java.lang.String("-nocomment")"-nocomment")
	def (ScalaProject.this.Access.Value)ScalaProject.this.SimpleDocOptionaccess(ScalaProject.this.Access.Valueaccess: Access.ScalaProject.this.Access.ValueValue) = (String)ScalaProject.this.SimpleDocOptionSimpleDocOption(java.lang.String("-access:")"-access:" (Any)java.lang.String+ ScalaProject.this.Access.Valueaccess)
	def (String)ScalaProject.this.CompoundDocOptiondocumentBottom(StringbottomText: StringString) = (String,String)ScalaProject.this.CompoundDocOptionCompoundDocOption(java.lang.String("-bottom")"-bottom", StringbottomText)
	def (String)ScalaProject.this.CompoundDocOptiondocumentCharset(Stringcharset: StringString) = (String,String)ScalaProject.this.CompoundDocOptionCompoundDocOption(java.lang.String("-charset")"-charset", Stringcharset)
	def (String)ScalaProject.this.CompoundDocOptiondocumentTitle(Stringtitle: StringString) = (String,String)ScalaProject.this.CompoundDocOptionCompoundDocOption(java.lang.String("-doctitle")"-doctitle", Stringtitle)
	def (String)ScalaProject.this.CompoundDocOptiondocumentFooter(StringfooterText: StringString) = (String,String)ScalaProject.this.CompoundDocOptionCompoundDocOption(java.lang.String("-footer")"-footer", StringfooterText)
	def (String)ScalaProject.this.CompoundDocOptiondocumentHeader(StringheaderText: StringString) = (String,String)ScalaProject.this.CompoundDocOptionCompoundDocOption(java.lang.String("-header")"-header", StringheaderText)
	def (sbt.Path)ScalaProject.this.CompoundDocOptionstylesheetFile(sbt.Pathpath: sbt.PathPath) = (String,String)ScalaProject.this.CompoundDocOptionCompoundDocOption(java.lang.String("-stylesheetfile")"-stylesheetfile", sbt.Pathpath.=> java.io.FileasFile.()java.lang.StringgetAbsolutePath)
	def (String)ScalaProject.this.CompoundDocOptiondocumentTop(StringtopText: StringString) = (String,String)ScalaProject.this.CompoundDocOptionCompoundDocOption(java.lang.String("-top")"-top", StringtopText)
	def (String)ScalaProject.this.CompoundDocOptionwindowTitle(Stringtitle: StringString) = (String,String)ScalaProject.this.CompoundDocOptionCompoundDocOption(java.lang.String("-windowtitle")"-windowtitle", Stringtitle)
	
	object object ScalaProject.this.AccessAccess extends EnumerationEnumeration
	{
		val sbt.ScalaProject.Access.ValuePublic = (String)sbt.ScalaProject.Access.ValueValue(java.lang.String("public")"public")
		val sbt.ScalaProject.Access.ValueDefault = (String)sbt.ScalaProject.Access.ValueValue(java.lang.String("protected")"protected")
		val sbt.ScalaProject.Access.ValuePrivate = (String)sbt.ScalaProject.Access.ValueValue(java.lang.String("private")"private")
	}

	def (sbt.PathFinder)ScalaProject.this.TaskconsoleTask(sbt.PathFinderclasspath : sbt.PathFinderPathFinder): ScalaProject.this.TaskTask = 
		(=> Option[String])ScalaProject.this.TaskinteractiveTask { object sbt.RunRun.(Iterable[sbt.Path],sbt.Logger)Option[String]console(sbt.PathFinderclasspath.=> scala.collection.Set[sbt.Path]get, => sbt.Loggerlog) }

	def (Option[String],sbt.PathFinder,String*)ScalaProject.this.TaskrunTask(Option[String]mainClass: Option[String]Option[String], sbt.PathFinderclasspath: sbt.PathFinderPathFinder, String*options: String*String*): ScalaProject.this.TaskTask =
		(Option[String],sbt.PathFinder,=> Seq[String])ScalaProject.this.TaskrunTask(Option[String]mainClass, sbt.PathFinderclasspath, String*options)
	def (Option[String],sbt.PathFinder,=> Seq[String])ScalaProject.this.TaskrunTask(Option[String]mainClass: Option[String]Option[String], sbt.PathFinderclasspath: sbt.PathFinderPathFinder, => Seq[String]options: => Seq[String]): ScalaProject.this.TaskTask =
		(=> Option[String])ScalaProject.this.Tasktask
		{
			Option[String]if(Option[String]mainClass.=> BooleanisDefined)
				(Option[String],Iterable[sbt.Path],Seq[String],sbt.Logger)Option[String]Run(Option[String]mainClass, sbt.PathFinderclasspath.=> scala.collection.Set[sbt.Path]get, => Seq[String]options, => sbt.Loggerlog)
			else
				(java.lang.String)Some[java.lang.String]Some(java.lang.String("No main class specified.")"No main class specified.")
		}

	def (sbt.PathFinder,ScalaProject.this.CleanOption*)ScalaProject.this.TaskcleanTask(sbt.PathFinderpaths: sbt.PathFinderPathFinder, ScalaProject.this.CleanOption*options: ScalaProject.this.CleanOption*CleanOption*): ScalaProject.this.TaskTask =
		(sbt.PathFinder,=> Seq[ScalaProject.this.CleanOption])ScalaProject.this.TaskcleanTask(sbt.PathFinderpaths, ScalaProject.this.CleanOption*options)
	def (sbt.PathFinder,=> Seq[ScalaProject.this.CleanOption])ScalaProject.this.TaskcleanTask(sbt.PathFinderpaths: sbt.PathFinderPathFinder, => Seq[ScalaProject.this.CleanOption]options: => Seq[CleanOption]): ScalaProject.this.TaskTask =
		(=> Option[String])ScalaProject.this.Tasktask
		{
			val Option[String]pathClean = object sbt.FileUtilitiesFileUtilities.(Iterable[sbt.Path],sbt.Logger)Option[String]clean(sbt.PathFinderpaths.=> scala.collection.Set[sbt.Path]get, => sbt.Loggerlog)
			for(((ScalaProject.this.CleanOption) => Unit)UnitClearAnalysis(sbt.TaskAnalysis[?, ?, ?]analysis) <- => Seq[ScalaProject.this.CleanOption]options)
			{
				sbt.TaskAnalysis[?, ?, ?]analysis.()Unitclear()
				sbt.TaskAnalysis[?, ?, ?]analysis.()Option[String]save()
			}
			Option[String]pathClean
		}
		
	def (sbt.Path,sbt.Path)ScalaProject.this.TasksyncTask(sbt.PathsourceDirectory: sbt.PathPath, sbt.PathdestinationDirectory: sbt.PathPath): ScalaProject.this.TaskTask =
		(=> Option[String])ScalaProject.this.Tasktask { object sbt.FileUtilitiesFileUtilities.(sbt.Path,sbt.Path,sbt.Logger)Option[String]sync(sbt.PathsourceDirectory, sbt.PathdestinationDirectory, => sbt.Loggerlog) }
	def (sbt.PathFinder,sbt.Path)ScalaProject.this.TaskcopyTask(sbt.PathFindersources: sbt.PathFinderPathFinder, sbt.PathdestinationDirectory: sbt.PathPath): ScalaProject.this.TaskTask =
		(=> Option[String])ScalaProject.this.Tasktask { object sbt.FileUtilitiesFileUtilities.(Iterable[sbt.Path],sbt.Path,sbt.Logger)Either[String,scala.collection.Set[sbt.Path]] with Productcopy(sbt.PathFindersources.=> scala.collection.Set[sbt.Path]get, sbt.PathdestinationDirectory, => sbt.Loggerlog).=> Either.LeftProjection[String,scala.collection.Set[sbt.Path]]left.=> Option[String]toOption }

	def (Iterable[sbt.TestFramework],sbt.PathFinder,sbt.CompileAnalysis,ScalaProject.this.TestOption*)ScalaProject.this.TasktestTask(Iterable[sbt.TestFramework]frameworks: Iterable[sbt.TestFramework]Iterable[TestFramework], sbt.PathFinderclasspath: sbt.PathFinderPathFinder, sbt.CompileAnalysisanalysis: sbt.CompileAnalysisCompileAnalysis, ScalaProject.this.TestOption*options: ScalaProject.this.TestOption*TestOption*): ScalaProject.this.TaskTask =
		(Iterable[sbt.TestFramework],sbt.PathFinder,sbt.CompileAnalysis,=> Seq[ScalaProject.this.TestOption])ScalaProject.this.TasktestTask(Iterable[sbt.TestFramework]frameworks, sbt.PathFinderclasspath, sbt.CompileAnalysisanalysis, ScalaProject.this.TestOption*options)
	def (Iterable[sbt.TestFramework],sbt.PathFinder,sbt.CompileAnalysis,=> Seq[ScalaProject.this.TestOption])ScalaProject.this.TasktestTask(Iterable[sbt.TestFramework]frameworks: Iterable[sbt.TestFramework]Iterable[TestFramework], sbt.PathFinderclasspath: sbt.PathFinderPathFinder, sbt.CompileAnalysisanalysis: sbt.CompileAnalysisCompileAnalysis, => Seq[ScalaProject.this.TestOption]options: => Seq[TestOption]): ScalaProject.this.TaskTask =
		(=> Option[String])ScalaProject.this.Tasktask{ (Iterable[sbt.TestFramework],sbt.PathFinder,sbt.CompileAnalysis,=> Seq[ScalaProject.this.TestOption])Option[String]doTests(Iterable[sbt.TestFramework]frameworks, sbt.PathFinderclasspath, sbt.CompileAnalysisanalysis, => Seq[ScalaProject.this.TestOption]options) }

	def (sbt.Path,sbt.CompileAnalysis)ScalaProject.this.TaskgraphTask(sbt.PathoutputDirectory: sbt.PathPath, sbt.CompileAnalysisanalysis: sbt.CompileAnalysisCompileAnalysis): ScalaProject.this.TaskTask = (=> Option[String])ScalaProject.this.Tasktask { (sbt.CompileAnalysis,sbt.Path,sbt.Logger)Option[String]DotGraph(sbt.CompileAnalysisanalysis, sbt.PathoutputDirectory, => sbt.Loggerlog) }
	def (String,sbt.PathFinder,sbt.Path,sbt.PathFinder,ScalaProject.this.ScaladocOption*)ScalaProject.this.TaskscaladocTask(Stringlabel: StringString, sbt.PathFindersources: sbt.PathFinderPathFinder, sbt.PathoutputDirectory: sbt.PathPath, sbt.PathFinderclasspath: sbt.PathFinderPathFinder, ScalaProject.this.ScaladocOption*options: ScalaProject.this.ScaladocOption*ScaladocOption*): ScalaProject.this.TaskTask =
		(String,sbt.PathFinder,sbt.Path,sbt.PathFinder,=> Seq[ScalaProject.this.ScaladocOption])ScalaProject.this.TaskscaladocTask(Stringlabel, sbt.PathFindersources, sbt.PathoutputDirectory, sbt.PathFinderclasspath, ScalaProject.this.ScaladocOption*options)
	def (String,sbt.PathFinder,sbt.Path,sbt.PathFinder,=> Seq[ScalaProject.this.ScaladocOption])ScalaProject.this.TaskscaladocTask(Stringlabel: StringString, sbt.PathFindersources: sbt.PathFinderPathFinder, sbt.PathoutputDirectory: sbt.PathPath, sbt.PathFinderclasspath: sbt.PathFinderPathFinder, => Seq[ScalaProject.this.ScaladocOption]options: => Seq[ScaladocOption]): ScalaProject.this.TaskTask =
		(=> Option[String])ScalaProject.this.Tasktask
		{
			val StringclasspathString = object sbt.PathPath.(Iterable[sbt.Path])StringmakeString(sbt.PathFinderclasspath.=> scala.collection.Set[sbt.Path]get)
			(String,Iterable[sbt.Path],String,sbt.Path,Iterable[String],sbt.Logger)Option[String]Scaladoc(Stringlabel, sbt.PathFindersources.=> scala.collection.Set[sbt.Path]get, StringclasspathString, sbt.PathoutputDirectory, => Seq[ScalaProject.this.ScaladocOption]options.((ScalaProject.this.ScaladocOption) => Iterable[String])Seq[String]flatMap(ScalaProject.this.ScaladocOption_.=> List[String]asList), => sbt.Loggerlog)
		}

	def (sbt.PathFinder,sbt.Path,=> String,ScalaProject.this.PackageOption*)ScalaProject.this.TaskpackageTask(sbt.PathFindersources: sbt.PathFinderPathFinder, sbt.PathoutputDirectory: sbt.PathPath, => StringjarName: => String, ScalaProject.this.PackageOption*options: ScalaProject.this.PackageOption*PackageOption*): ScalaProject.this.TaskTask =
		(sbt.PathFinder,sbt.Path,=> String,=> Seq[ScalaProject.this.PackageOption])ScalaProject.this.TaskpackageTask(sbt.PathFindersources, sbt.PathoutputDirectory, => StringjarName, ScalaProject.this.PackageOption*options)
	def (sbt.PathFinder,sbt.Path,=> String,=> Seq[ScalaProject.this.PackageOption])ScalaProject.this.TaskpackageTask(sbt.PathFindersources: sbt.PathFinderPathFinder, sbt.PathoutputDirectory: sbt.PathPath, => StringjarName: => String, => Seq[ScalaProject.this.PackageOption]options: => Seq[PackageOption]): ScalaProject.this.TaskTask =
		(String,sbt.ProductsSources)(=> Option[String])ScalaProject.this.TaskfileTask(java.lang.String("package")"package", (sbt.PathoutputDirectory implicit sbt.FileTasks.wrapProduct : (=> sbt.Path)sbt.ProductsWrapper/ => StringjarName) (sbt.PathFinder)sbt.ProductsSourcesfrom sbt.PathFindersources)
		{
			import scala.collection.jcl.Map
			/** Copies the mappings in a2 to a1, mutating a1. */
			def (java.util.jar.Attributes,java.util.jar.Attributes)UnitmergeAttributes(java.util.jar.Attributesa1: java.util.jar.AttributesAttributes, java.util.jar.Attributesa2: java.util.jar.AttributesAttributes)
			{
				for( (((java.lang.Object, java.lang.Object)) => Unit)Unit(java.lang.Objectkey, java.lang.Objectvalue) <- (java.util.Map[java.lang.Object,java.lang.Object])java.lang.Object with scala.collection.jcl.MapWrapper[java.lang.Object,java.lang.Object]Map(java.util.jar.Attributesa2))
					java.util.jar.Attributesa1.(Any,Any)java.lang.Objectput(java.lang.Objectkey, java.lang.Objectvalue)
			}

			import scala.collection.mutable.ListBuffer
			val java.util.jar.Manifestmanifest = java.util.jar.Manifestnew java.util.jar.ManifestManifest
			var Booleanrecursive = Boolean(false)false
			for(((ScalaProject.this.PackageOption) => Unit)Unitoption <- => Seq[ScalaProject.this.PackageOption]options)
			{
				ScalaProject.this.PackageOptionoption Unitmatch
				{
					Unitcase JarManifest(java.util.jar.ManifestmergeManifest) => 
					{
						(java.util.jar.Attributes,java.util.jar.Attributes)UnitmergeAttributes(java.util.jar.Manifestmanifest.()java.util.jar.AttributesgetMainAttributes, java.util.jar.ManifestmergeManifest.()java.util.jar.AttributesgetMainAttributes)
						val <refinement> extends java.lang.Object with scala.collection.jcl.MapWrapper[java.lang.String,java.util.jar.Attributes]entryMap = (java.util.Map[java.lang.String,java.util.jar.Attributes])java.lang.Object with scala.collection.jcl.MapWrapper[java.lang.String,java.util.jar.Attributes]Map(java.util.jar.Manifestmanifest.()java.util.Map[java.lang.String,java.util.jar.Attributes]getEntries)
						for((((java.lang.String, java.util.jar.Attributes)) => Unit)Unit(java.lang.Stringkey, java.util.jar.Attributesvalue) <- (java.util.Map[java.lang.String,java.util.jar.Attributes])java.lang.Object with scala.collection.jcl.MapWrapper[java.lang.String,java.util.jar.Attributes]Map(java.util.jar.ManifestmergeManifest.()java.util.Map[java.lang.String,java.util.jar.Attributes]getEntries))
						{
							<refinement> extends java.lang.Object with scala.collection.jcl.MapWrapper[java.lang.String,java.util.jar.Attributes]entryMap.(java.lang.String)Option[java.util.jar.Attributes]get(java.lang.Stringkey) Unitmatch
							{
								Unitcase Some(java.util.jar.Attributesattributes) => (java.util.jar.Attributes,java.util.jar.Attributes)UnitmergeAttributes(java.util.jar.Attributesattributes, java.util.jar.Attributesvalue)
								Unitcase object NoneNone => <refinement> extends java.lang.Object with scala.collection.jcl.MapWrapper[java.lang.String,java.util.jar.Attributes]entryMap.(java.lang.String,java.util.jar.Attributes)Option[java.util.jar.Attributes]put(java.lang.Stringkey, java.util.jar.Attributesvalue)
							}
						}
					}
					Unitcase object ScalaProject.this.RecursiveRecursive => Booleanrecursive = Boolean(true)true
					Unitcase MainClass(StringmainClassName) =>
						java.util.jar.Manifestmanifest.()java.util.jar.AttributesgetMainAttributes.(Any,Any)java.lang.Objectput(object java.util.jar.AttributesAttributes.object java.util.jar.Attributes.NameName.java.util.jar.Attributes.NameMAIN_CLASS, StringmainClassName)
					Unitcase _ => => sbt.Loggerlog.(=> String)Unitwarn(java.lang.String("Ignored unknown package option ")"Ignored unknown package option " (Any)java.lang.String+ ScalaProject.this.PackageOptionoption)
				}
			}
			val sbt.PathjarPath = sbt.PathoutputDirectory (String)sbt.Path/ => StringjarName
			object sbt.FileUtilitiesFileUtilities.(Iterable[sbt.Path],sbt.Logger)Option[String]clean(sbt.PathjarPath (sbt.Path)List[sbt.Path]:: object NilNil, => sbt.Loggerlog) (=> Option[String])Option[String]orElse
			object sbt.FileUtilitiesFileUtilities.(Iterable[sbt.Path],sbt.Path,java.util.jar.Manifest,Boolean,sbt.Logger)Option[String]jar(sbt.PathFindersources.=> scala.collection.Set[sbt.Path]get, sbt.PathjarPath, java.util.jar.Manifestmanifest, Booleanrecursive, => sbt.Loggerlog)
		}
	def (sbt.PathFinder,sbt.Path,=> String)ScalaProject.this.TaskzipTask(sbt.PathFindersources: sbt.PathFinderPathFinder, sbt.PathoutputDirectory: sbt.PathPath, => StringzipName: => String): ScalaProject.this.TaskTask =
		(String,sbt.ProductsSources)(=> Option[String])ScalaProject.this.TaskfileTask(java.lang.String("zip")"zip", (sbt.PathoutputDirectory implicit sbt.FileTasks.wrapProduct : (=> sbt.Path)sbt.ProductsWrapper/ => StringzipName) (sbt.PathFinder)sbt.ProductsSourcesfrom sbt.PathFindersources)
		{
			val sbt.PathzipPath = sbt.PathoutputDirectory (String)sbt.Path/ => StringzipName
			object sbt.FileUtilitiesFileUtilities.(Iterable[sbt.Path],sbt.Path,Boolean,sbt.Logger)Option[String]zip(sbt.PathFindersources.=> scala.collection.Set[sbt.Path]get, sbt.PathzipPath, Boolean(false)false, => sbt.Loggerlog)
		}
	def ()UnitincrementVersionNumber()
	{
		=> ScalaProject.this.Property[sbt.Version]projectVersion.=> Option[sbt.Version]get Unitmatch
		{
			Unitcase Some(sbt.BasicVersionv: sbt.BasicVersionBasicVersion) =>
			{
				val sbt.VersionnewVersion = (sbt.BasicVersion)sbt.VersionincrementImpl(sbt.BasicVersionv)
				=> sbt.Loggerlog.(=> String)Unitinfo(java.lang.String("Changing version to ")"Changing version to " (Any)java.lang.String+ sbt.VersionnewVersion)
				=> ScalaProject.this.Property[sbt.Version]projectVersion() = sbt.VersionnewVersion
			}
			Unitcase Option[sbt.Version]a => Unit()
		}
	}
	protected def (sbt.BasicVersion)sbt.VersionincrementImpl(sbt.BasicVersionv: sbt.BasicVersionBasicVersion): sbt.VersionVersion = sbt.BasicVersionv.=> sbt.BasicVersionincrementMicro
	protected def (Iterable[sbt.TestFramework],sbt.PathFinder,sbt.CompileAnalysis,=> Seq[ScalaProject.this.TestOption])Option[String]doTests(Iterable[sbt.TestFramework]frameworks: Iterable[sbt.TestFramework]Iterable[TestFramework], sbt.PathFinderclasspath: sbt.PathFinderPathFinder, sbt.CompileAnalysisanalysis: sbt.CompileAnalysisCompileAnalysis, => Seq[ScalaProject.this.TestOption]options: => Seq[TestOption]): Option[String]Option[String] = {
		import scala.collection.mutable.HashSet

			val Seq[(String) => Boolean]testFilters = for(((ScalaProject.this.TestOption) => (String) => Boolean)Seq[(String) => Boolean]TestFilter((String) => Booleaninclude) <- => Seq[ScalaProject.this.TestOption]options) yield (String) => Booleaninclude
			val Seq[Iterable[String]]excludeTests = for(((ScalaProject.this.TestOption) => Iterable[String])Seq[Iterable[String]]ExcludeTests(Iterable[String]exclude) <- => Seq[ScalaProject.this.TestOption]options) yield Iterable[String]exclude
			val scala.collection.mutable.Set[String]excludeTestsSet = object scala.collection.mutable.HashSetHashSet.scala.collection.mutable.HashSet[String]empty[StringString] (Iterable[String])scala.collection.mutable.Set[String]++ Seq[Iterable[String]]excludeTests.((Iterable[String]) => Iterable[String])Seq[String]flatMap(Iterable[String]x => Iterable[String]x)
			Unitif(scala.collection.mutable.Set[String]excludeTestsSet.=> Intsize (Int)Boolean> Int(0)0 (Boolean)Boolean&& => sbt.Loggerlog.(sbt.Level.Value)BooleanatLevel(object sbt.LevelLevel.=> sbt.Level.ValueDebug))
			{
				=> sbt.Loggerlog.(=> String)Unitdebug(java.lang.String("Excluding tests: ")"Excluding tests: ")
				scala.collection.mutable.Set[String]excludeTestsSet.((String) => Unit)Unitforeach(Stringtest => => sbt.Loggerlog.(=> String)Unitdebug(java.lang.String("\011")"\t" (Any)java.lang.String+ Stringtest))
			}
			def (sbt.TestDefinition)BooleanincludeTest(sbt.TestDefinitiontest: sbt.TestDefinitionTestDefinition) = => Boolean!scala.collection.mutable.Set[String]excludeTestsSet.(String)Booleancontains(sbt.TestDefinitiontest.=> StringtestClassName) (Boolean)Boolean&& Seq[(String) => Boolean]testFilters.(((String) => Boolean) => Boolean)Booleanforall((String) => Booleanfilter => (String)Booleanfilter(sbt.TestDefinitiontest.=> StringtestClassName))
			val scala.collection.mutable.Set[sbt.TestDefinition]tests = object scala.collection.mutable.HashSetHashSet.scala.collection.mutable.HashSet[sbt.TestDefinition]empty[sbt.TestDefinitionTestDefinition] (Iterable[sbt.TestDefinition])scala.collection.mutable.Set[sbt.TestDefinition]++ sbt.CompileAnalysisanalysis.=> Iterable[sbt.TestDefinition]allTests.((sbt.TestDefinition) => Boolean)Iterable[sbt.TestDefinition]filter((sbt.TestDefinition)BooleanincludeTest)
			val Seq[sbt.TestReportListener]listeners = (for(((ScalaProject.this.TestOption) => Iterable[sbt.TestReportListener])Seq[Iterable[sbt.TestReportListener]]TestListeners(Iterable[sbt.TestReportListener]listeners) <- => Seq[ScalaProject.this.TestOption]options) yield Iterable[sbt.TestReportListener]listeners).((Iterable[sbt.TestReportListener]) => Iterable[sbt.TestReportListener])Seq[sbt.TestReportListener]flatMap(Iterable[sbt.TestReportListener]x => Iterable[sbt.TestReportListener]x)
			object sbt.TestFrameworkTestFramework.(Iterable[sbt.TestFramework],Iterable[sbt.Path],Iterable[sbt.TestDefinition],sbt.Logger,Iterable[sbt.TestReportListener])Option[String]runTests(Iterable[sbt.TestFramework]frameworks, sbt.PathFinderclasspath.=> scala.collection.Set[sbt.Path]get, scala.collection.mutable.Set[sbt.TestDefinition]tests, => sbt.Loggerlog, Seq[sbt.TestReportListener]listeners)
	}
	
	protected def (sbt.CompileAnalysis,=> Seq[ScalaProject.this.TestOption])((Seq[ScalaProject.this.TestOption]) => ScalaProject.this.Task)ScalaProject.this.MethodTasktestQuickMethod(sbt.CompileAnalysistestAnalysis: sbt.CompileAnalysisCompileAnalysis, => Seq[ScalaProject.this.TestOption]options: => Seq[TestOption])((Seq[ScalaProject.this.TestOption]) => ScalaProject.this.TasktoRun: Seq[TestOption] => Task) =
		((Array[String]) => ScalaProject.this.ManagedTask)ScalaProject.this.MethodTasktask { Array[String]tests =>
			val (List[sbt.NameFilter], List[sbt.NameFilter])(List[sbt.NameFilter]exactFilters, List[sbt.NameFilter]testFilters) = Array[String]tests.=> List[String]toList.((String) => sbt.NameFilter)List[sbt.NameFilter]map(object sbt.GlobFilterGlobFilter.(String)sbt.NameFilterapply).((sbt.NameFilter) => Boolean)(List[sbt.NameFilter], List[sbt.NameFilter])partition(sbt.NameFilter_.BooleanisInstanceOf[sbt.ExactFilterExactFilter])
			val List[String]includeTests = List[sbt.NameFilter]exactFilters.((sbt.NameFilter) => String)List[String]map(sbt.NameFilter_.sbt.ExactFilterasInstanceOf[sbt.ExactFilterExactFilter].=> StringmatchName)
			val scala.collection.mutable.Set[String]toCheck = scala.collection.mutable.(String*)scala.collection.mutable.Set[String]HashSet(List[String]includeTests: _*)
			scala.collection.mutable.Set[String]toCheck (Iterable[String])Unit--= sbt.CompileAnalysistestAnalysis.=> Iterable[sbt.TestDefinition]allTests.((sbt.TestDefinition) => String)Iterable[String]map(sbt.TestDefinition_.=> StringtestClassName)
			Unitif(=> Boolean!scala.collection.mutable.Set[String]toCheck.=> BooleanisEmpty (Boolean)Boolean&& => sbt.Loggerlog.(sbt.Level.Value)BooleanatLevel(object sbt.LevelLevel.=> sbt.Level.ValueWarn))
			{
				=> sbt.Loggerlog.(=> String)Unitwarn(java.lang.String("Test(s) not found:")"Test(s) not found:")
				scala.collection.mutable.Set[String]toCheck.((String) => Unit)Unitforeach(Stringtest => => sbt.Loggerlog.(=> String)Unitwarn(java.lang.String("\011")"\t" (Any)java.lang.String+ Stringtest))
			}
			val scala.collection.mutable.Set[String]includeTestsSet = scala.collection.mutable.(String*)scala.collection.mutable.Set[String]HashSet(List[String]includeTests: _*)
			val Seq[ScalaProject.this.TestOption]newOptions =
				Seq[ScalaProject.this.TestOption]if(List[String]includeTests.=> BooleanisEmpty (Boolean)Boolean&& List[sbt.NameFilter]testFilters.=> BooleanisEmpty) => Seq[ScalaProject.this.TestOption]options
				else ((String) => Boolean)ScalaProject.this.TestFilterTestFilter(Stringtest => scala.collection.mutable.Set[String]includeTestsSet.(String)Booleancontains(Stringtest) (Boolean)Boolean|| List[sbt.NameFilter]testFilters.((sbt.NameFilter) => Boolean)Booleanexists(sbt.NameFilter_.(String)Booleanaccept(Stringtest))) (ScalaProject.this.TestOption)List[ScalaProject.this.TestOption]:: => Seq[ScalaProject.this.TestOption]options.=> List[ScalaProject.this.TestOption]toList
			(Seq[ScalaProject.this.TestOption])ScalaProject.this.TasktoRun(Seq[ScalaProject.this.TestOption]newOptions)
		} (Iterable[String])ScalaProject.this.MethodTaskcompleteWith sbt.CompileAnalysistestAnalysis.=> Iterable[sbt.TestDefinition]allTests.((sbt.TestDefinition) => String)Iterable[String]map(sbt.TestDefinition_.=> StringtestClassName)
}
trait trait WebScalaProject extends java.lang.Object with sbt.ScalaProject with ScalaObjectWebScalaProject extends sbt.ScalaProjectScalaProject
{
	protected def (sbt.PathFinder,=> sbt.Path,sbt.PathFinder,=> Iterable[java.io.File])WebScalaProject.this.TaskprepareWebappTask(sbt.PathFinderwebappContents: sbt.PathFinderPathFinder, => sbt.PathwarPath: => Path, sbt.PathFinderclasspath: sbt.PathFinderPathFinder, => Iterable[java.io.File]extraJars: => Iterable[File]) =
		(=> Option[String])WebScalaProject.this.Tasktask
		{
			val sbt.PathwebInfPath = => sbt.PathwarPath (String)sbt.Path/ java.lang.String("WEB-INF")"WEB-INF"
			val sbt.PathwebLibDirectory = sbt.PathwebInfPath (String)sbt.Path/ java.lang.String("lib")"lib"
			val sbt.PathclassesTargetDirectory = sbt.PathwebInfPath (String)sbt.Path/ java.lang.String("classes")"classes"
			
			val (List[sbt.Path], List[sbt.Path])(List[sbt.Path]libs, List[sbt.Path]directories) = sbt.PathFinderclasspath.=> scala.collection.Set[sbt.Path]get.=> List[sbt.Path]toList.((sbt.Path) => Boolean)(List[sbt.Path], List[sbt.Path])partition(object sbt.ClasspathUtilitiesClasspathUtilities.(sbt.Path)BooleanisArchive)
			val sbt.PathFinderclassesAndResources = (sbt.PathFinder,sbt.FileFilter)sbt.PathFinderdescendents(object sbt.PathPath.(=> Iterable[sbt.Path])sbt.PathFinderlazyPathFinder(List[sbt.Path]directories) => sbt.PathFinder##, implicit sbt.Project.filter : (String)sbt.NameFilter"*")
			Unitif(=> sbt.Loggerlog.(sbt.Level.Value)BooleanatLevel(object sbt.LevelLevel.=> sbt.Level.ValueDebug))
				List[sbt.Path]directories.((sbt.Path) => Unit)Unitforeach(sbt.Pathd => => sbt.Loggerlog.(=> String)Unitdebug(java.lang.String(" Copying the contents of directory ")" Copying the contents of directory " (Any)java.lang.String+ sbt.Pathd (Any)java.lang.String+ java.lang.String(" to ")" to " (Any)java.lang.String+ sbt.PathclassesTargetDirectory))
			
			import FileUtilities.{copy, copyFlat, copyFilesFlat, clean}
			((Iterable[sbt.Path],sbt.Path,sbt.Logger)Either[String,scala.collection.Set[sbt.Path]] with Productcopy(sbt.PathFinderwebappContents.=> scala.collection.Set[sbt.Path]get, => sbt.PathwarPath, => sbt.Loggerlog).=> Either.RightProjection[String,scala.collection.Set[sbt.Path]]right ((scala.collection.Set[sbt.Path]) => Either[String,Unit])Either[String,Unit]flatMap { scala.collection.Set[sbt.Path]copiedWebapp =>
			(Iterable[sbt.Path],sbt.Path,sbt.Logger)Either[String,scala.collection.Set[sbt.Path]] with Productcopy(sbt.PathFinderclassesAndResources.=> scala.collection.Set[sbt.Path]get, sbt.PathclassesTargetDirectory, => sbt.Loggerlog).=> Either.RightProjection[String,scala.collection.Set[sbt.Path]]right ((scala.collection.Set[sbt.Path]) => Either[String,Unit])Either[String,Unit]flatMap { scala.collection.Set[sbt.Path]copiedClasses =>
			(Iterable[sbt.Path],sbt.Path,sbt.Logger)Either[String,scala.collection.Set[sbt.Path]] with ProductcopyFlat(List[sbt.Path]libs, sbt.PathwebLibDirectory, => sbt.Loggerlog).=> Either.RightProjection[String,scala.collection.Set[sbt.Path]]right ((scala.collection.Set[sbt.Path]) => Either[String,Unit])Either[String,Unit]flatMap { scala.collection.Set[sbt.Path]copiedLibs =>
			(Iterable[java.io.File],sbt.Path,sbt.Logger)Either[String,scala.collection.Set[sbt.Path]]copyFilesFlat(=> Iterable[java.io.File]extraJars, sbt.PathwebLibDirectory, => sbt.Loggerlog).=> Either.RightProjection[String,scala.collection.Set[sbt.Path]]right ((scala.collection.Set[sbt.Path]) => Either[String,Unit])Either[String,Unit]flatMap { scala.collection.Set[sbt.Path]copiedExtraLibs =>
				{
					val scala.collection.mutable.Set[sbt.Path]toRemove = scala.collection.mutable.(sbt.Path*)scala.collection.mutable.Set[sbt.Path]HashSet((=> sbt.PathwarPath (sbt.FileFilter)sbt.PathFinder** implicit sbt.Project.filter : (String)sbt.NameFilter"*").=> scala.collection.Set[sbt.Path]get.=> Seq[sbt.Path]toSeq : _*)
					scala.collection.mutable.Set[sbt.Path]toRemove (Iterable[sbt.Path])Unit--= scala.collection.Set[sbt.Path]copiedWebapp
					scala.collection.mutable.Set[sbt.Path]toRemove (Iterable[sbt.Path])Unit--= scala.collection.Set[sbt.Path]copiedClasses
					scala.collection.mutable.Set[sbt.Path]toRemove (Iterable[sbt.Path])Unit--= scala.collection.Set[sbt.Path]copiedLibs
					scala.collection.mutable.Set[sbt.Path]toRemove (Iterable[sbt.Path])Unit--= scala.collection.Set[sbt.Path]copiedExtraLibs
					val (List[sbt.Path], List[sbt.Path])(List[sbt.Path]directories, List[sbt.Path]files) = scala.collection.mutable.Set[sbt.Path]toRemove.=> List[sbt.Path]toList.((sbt.Path) => Boolean)(List[sbt.Path], List[sbt.Path])partition(sbt.Path_.=> BooleanisDirectory)
					Unitif(=> sbt.Loggerlog.(sbt.Level.Value)BooleanatLevel(object sbt.LevelLevel.=> sbt.Level.ValueDebug))
						List[sbt.Path]files.((sbt.Path) => Unit)Unitforeach(sbt.Pathr => => sbt.Loggerlog.(=> String)Unitdebug(java.lang.String("Pruning file ")"Pruning file " (Any)java.lang.String+ sbt.Pathr))
					val Option[String]result =
						(Iterable[sbt.Path],Boolean,sbt.Logger)Option[String]clean(List[sbt.Path]files, Boolean(true)true, => sbt.Loggerlog) (=> Option[String])Option[String]orElse
						{
							val List[sbt.Path]emptyDirectories = List[sbt.Path]directories.((sbt.Path) => Boolean)List[sbt.Path]filter(sbt.Pathdirectory => sbt.Pathdirectory.=> java.io.FileasFile.()Array[java.io.File]listFiles.=> BooleanisEmpty)
							Unitif(=> sbt.Loggerlog.(sbt.Level.Value)BooleanatLevel(object sbt.LevelLevel.=> sbt.Level.ValueDebug))
								List[sbt.Path]emptyDirectories.((sbt.Path) => Unit)Unitforeach(sbt.Pathr => => sbt.Loggerlog.(=> String)Unitdebug(java.lang.String("Pruning directory ")"Pruning directory " (Any)java.lang.String+ sbt.Pathr))
							(Iterable[sbt.Path],Boolean,sbt.Logger)Option[String]clean(List[sbt.Path]emptyDirectories, Boolean(true)true, => sbt.Loggerlog)
						}
					Option[String]result.(=> Unit)Either[String,Unit] with ProducttoLeft(Unit())
				}
			}}}}).=> Either.LeftProjection[String,Unit]left.=> Option[String]toOption
		}
	def (=> sbt.Path,=> String,sbt.PathFinder,String,Seq[java.io.File],Int)WebScalaProject.this.TaskjettyRunTask(=> sbt.PathwarPath: => Path, => StringdefaultContextPath: => String, sbt.PathFinderclasspath: sbt.PathFinderPathFinder, StringclasspathName: StringString, Seq[java.io.File]scanDirectories: Seq[java.io.File]Seq[File], IntscanInterval: IntInt): WebScalaProject.this.TaskTask =
		(=> Option[String])WebScalaProject.this.Tasktask { (Iterable[sbt.Path],String,sbt.Path,String,Seq[java.io.File],Int,sbt.Logger)Option[String]JettyRun(sbt.PathFinderclasspath.=> scala.collection.Set[sbt.Path]get, StringclasspathName, => sbt.PathwarPath, => StringdefaultContextPath, Seq[java.io.File]scanDirectories, IntscanInterval, => sbt.Loggerlog) }
	def (=> sbt.Path,=> String,sbt.PathFinder,String,scala.xml.NodeSeq,Seq[java.io.File])WebScalaProject.this.TaskjettyRunTask(=> sbt.PathwarPath: => Path, => StringdefaultContextPath: => String, sbt.PathFinderclasspath: sbt.PathFinderPathFinder, StringclasspathName: StringString,
		scala.xml.NodeSeqjettyConfigurationXML: scala.xml.scala.xml.NodeSeqNodeSeq, Seq[java.io.File]jettyConfigurationFiles: Seq[java.io.File]Seq[File]): WebScalaProject.this.TaskTask =
			(=> sbt.Path,=> String,sbt.PathFinder,String,scala.xml.NodeSeq,Seq[java.io.File])WebScalaProject.this.TaskjettyRunTask(=> sbt.PathwarPath, => StringdefaultContextPath, sbt.PathFinderclasspath, StringclasspathName, scala.xml.NodeSeqjettyConfigurationXML, Seq[java.io.File]jettyConfigurationFiles)
	def => WebScalaProject.this.TaskjettyStopTask = (=> Option[String])WebScalaProject.this.Tasktask { object sbt.JettyRunJettyRun.()Unitstop(); object NoneNone }
}
object object sbt.ScalaProjectScalaProject
{
	val java.lang.StringAnalysisDirectoryName = java.lang.String("analysis")"analysis"
	val java.lang.StringMainClassKey = java.lang.String("Main-Class")"Main-Class"
	val java.lang.StringTestResourcesProperty = java.lang.String("sbt.test.resources")"sbt.test.resources"
}