class Builder {

		private Boolean activeByDefault;

		private String jdk;

		private Os os;

		private Property property;

		private String fileExists;

		private String fileMissing;

		protected Builder() {
		}

		/**
		 * Specify if the profile should be enabled if no profile is active.
		 * @param activeByDefault whether to enable the profile is no profile is active
		 * @return this for method chaining
		 */
		public Builder activeByDefault(Boolean activeByDefault) {
			this.activeByDefault = activeByDefault;
			return this;
		}

		/**
		 * Specify the JDK(s) to match to enable the profile. Can be a JDK value or an
		 * OSGi range.
		 * @param jdk the jdk (or JDKs range) to match
		 * @return this for method chaining
		 */
		public Builder jdk(String jdk) {
			this.jdk = jdk;
			return this;
		}

		/**
		 * Specify the OS to match to enable the profile.
		 * @param name the name of the OS
		 * @param family the family os OS
		 * @param arch the cpu architecture
		 * @param version the version of the OS
		 * @return this for method chaining
		 */
		public Builder os(String name, String family, String arch, String version) {<FILL_FUNCTION_BODY>}

		/**
		 * Specify the property to match to enable the profile.
		 * @param name the name of the property
		 * @param value the value of the property
		 * @return this for method chaining
		 */
		public Builder property(String name, String value) {
			if (name == null) {
				this.property = null;
			}
			else {
				this.property = new Property(name, value);
			}
			return this;
		}

		/**
		 * Specify the file that should exist to enable the profile.
		 * @param existingFile the file that should exist
		 * @return this for method chaining
		 */
		public Builder fileExists(String existingFile) {
			this.fileExists = existingFile;
			return this;
		}

		/**
		 * Specify the file that should be missing to enable the profile.
		 * @param missingFile the file that should be missing
		 * @return this for method chaining
		 */
		public Builder fileMissing(String missingFile) {
			this.fileMissing = missingFile;
			return this;
		}

		/**
		 * Create a {@link MavenProfileActivation} with the current state of this builder.
		 * @return a {@link MavenProfileActivation}.
		 */
		public MavenProfileActivation build() {
			return new MavenProfileActivation(this);
		}

	}

			if (name == null && family == null && arch == null && version == null) {
				this.os = null;
			}
			else {
				this.os = new Os(name, family, arch, version);
			}
			return this;
		
<no_super_class>