// Path: src/main/java/com/github/mjeanroy/maven/plugins/node/model/LockStrategy.java
// public enum LockStrategy {
// 
// 	READ {
// 		@Override
// 		public Lock getLock(ReadWriteLock rwLock) {
// 			return rwLock.readLock();
// 		}
// 	},
// 
// 	WRITE {
// 		@Override
// 		public Lock getLock(ReadWriteLock rwLock) {
// 			return rwLock.writeLock();
// 		}
// 	};
// 
// 	public abstract Lock getLock(ReadWriteLock rwLock);
// }
// 
// Path: src/main/java/com/github/mjeanroy/maven/plugins/node/commons/lang/Objects.java
// public static <T> T firstNonNull(T v1, T v2) {
// 	return v1 == null ? v2 : v1;
// }
// 
// Path: src/main/java/com/github/mjeanroy/maven/plugins/node/mojos/Assets.java
// static Collection<String> installAssets() {
// 	Set<String> assets = new LinkedHashSet<>();
// 	assets.addAll(NPM_ASSETS);
// 	assets.addAll(YARN_ASSETS);
// 	assets.addAll(BOWER_ASSETS);
// 	assets.addAll(LERNA_ASSETS);
// 	return unmodifiableCollection(assets);
// }


import static com.github.mjeanroy.maven.plugins.node.commons.lang.Objects.firstNonNull;
import static com.github.mjeanroy.maven.plugins.node.mojos.Assets.installAssets;
import com.github.mjeanroy.maven.plugins.node.model.LockStrategy;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import java.util.Collection;

	/**
	 * Create Mojo.
	 */
	public PreCleanMojo() {
		super();
	}

	@Override
	String getGoalName() {
		return GOAL_NAME;
	}

	@Override
	String getScript() {
		return firstNonNull(preCleanScript, DEFAULT_SCRIPT);
	}

	@Override
	boolean shouldSkip() {
		return skipPreClean;
	}

	@Override
	Collection<String> getDefaultIncrementalBuildIncludes() {
		return installAssets();
	}

	@Override
	LockStrategy lockStrategy() {
// Path: src/main/java/com/github/mjeanroy/maven/plugins/node/model/LockStrategy.java
// public enum LockStrategy {
// 
// 	READ {
// 		@Override
// 		public Lock getLock(ReadWriteLock rwLock) {
// 			return rwLock.readLock();
// 		}
// 	},
// 
// 	WRITE {
// 		@Override
// 		public Lock getLock(ReadWriteLock rwLock) {
// 			return rwLock.writeLock();
// 		}
// 	};
// 
// 	public abstract Lock getLock(ReadWriteLock rwLock);
// }
// 
// Path: src/main/java/com/github/mjeanroy/maven/plugins/node/commons/lang/Objects.java
// public static <T> T firstNonNull(T v1, T v2) {
// 	return v1 == null ? v2 : v1;
// }
// 
// Path: src/main/java/com/github/mjeanroy/maven/plugins/node/mojos/Assets.java
// static Collection<String> installAssets() {
// 	Set<String> assets = new LinkedHashSet<>();
// 	assets.addAll(NPM_ASSETS);
// 	assets.addAll(YARN_ASSETS);
// 	assets.addAll(BOWER_ASSETS);
// 	assets.addAll(LERNA_ASSETS);
// 	return unmodifiableCollection(assets);
// }


// Path: src/main/java/com/github/mjeanroy/maven/plugins/node/mojos/PreCleanMojo.java
import static com.github.mjeanroy.maven.plugins.node.commons.lang.Objects.firstNonNull;
import static com.github.mjeanroy.maven.plugins.node.mojos.Assets.installAssets;
import com.github.mjeanroy.maven.plugins.node.model.LockStrategy;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import java.util.Collection;


	/**
	 * Create Mojo.
	 */
	public PreCleanMojo() {
		super();
	}

	@Override
	String getGoalName() {
		return GOAL_NAME;
	}

	@Override
	String getScript() {
		return firstNonNull(preCleanScript, DEFAULT_SCRIPT);
	}

	@Override
	boolean shouldSkip() {
		return skipPreClean;
	}

	@Override
	Collection<String> getDefaultIncrementalBuildIncludes() {
		return installAssets();
	}

	@Override
	LockStrategy lockStrategy() {
		return LockStrategy.WRITE;