class Builder extends BuildSettings.Builder<Builder> {

		private String sourceCompatibility;

		private final List<PluginMapping> pluginMappings = new ArrayList<>();

		/**
		 * Set the java version compatibility to use when compiling Java source.
		 * @param sourceCompatibility java version compatibility
		 * @return this for method chaining
		 */
		public Builder sourceCompatibility(String sourceCompatibility) {
			this.sourceCompatibility = sourceCompatibility;
			return self();
		}

		/**
		 * Map the plugin with the specified id to the specified {@link Dependency}. This
		 * is mandatory when a plugin does not have an appropriate plugin marker artifact.
		 * @param id the id of a plugin
		 * @param pluginDependency the dependency for that plugin
		 * @return this for method chaining
		 */
		public Builder mapPlugin(String id, Dependency pluginDependency) {<FILL_FUNCTION_BODY>}

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

	}

			if (pluginDependency.getVersion() == null || pluginDependency.getVersion().isProperty()) {
				throw new IllegalArgumentException("Mapping for plugin '" + id + "' must have a version");
			}
			this.pluginMappings.add(new PluginMapping(id, pluginDependency));
			return this;
		
<methods>public java.lang.String getArtifact() ,public java.lang.String getGroup() ,public java.lang.String getVersion() <variables>private final non-sealed java.lang.String artifact,private final non-sealed java.lang.String group,private final non-sealed java.lang.String version