class ExecutionBuilder {

		private final String id;

		private String phase;

		private final List<String> goals = new ArrayList<>();

		private ConfigurationBuilder configurationCustomization = null;

		public ExecutionBuilder(String id) {
			this.id = id;
		}

		Execution build() {<FILL_FUNCTION_BODY>}

		/**
		 * Set the {@code phase} of the build lifecycle that goals will execute in.
		 * @param phase the phase to use
		 * @return this for method chaining
		 */
		public ExecutionBuilder phase(String phase) {
			this.phase = phase;
			return this;
		}

		/**
		 * Add a goal to invoke for this execution.
		 * @param goal the goal to invoke
		 * @return this for method chaining
		 */
		public ExecutionBuilder goal(String goal) {
			this.goals.add(goal);
			return this;
		}

		/**
		 * Customize the {@code configuration} of the execution using the specified
		 * consumer.
		 * @param configuration a consumer of the current configuration
		 * @return this for method chaining
		 */
		public ExecutionBuilder configuration(Consumer<ConfigurationBuilder> configuration) {
			if (this.configurationCustomization == null) {
				this.configurationCustomization = new ConfigurationBuilder();
			}
			configuration.accept(this.configurationCustomization);
			return this;
		}

	}

			return new Execution(this.id, this.phase, this.goals,
					(this.configurationCustomization == null) ? null : this.configurationCustomization.build());
		
<no_super_class>