diff --git a/src/com/diffplug/common/base/Consumers.java b/src/com/diffplug/common/base/Consumers.java
index <HASH>..<HASH> 100644
--- a/src/com/diffplug/common/base/Consumers.java
+++ b/src/com/diffplug/common/base/Consumers.java
@@ -16,6 +16,7 @@
 package com.diffplug.common.base;
 
 import java.util.function.Consumer;
+import java.util.function.Function;
 import java.util.function.Supplier;
 
 /** Helper functions for manipulating {@link Consumer}. */
@@ -25,11 +26,15 @@ public class Consumers {
 		return value -> {};
 	}
 
+	/** The equivalent of {@link Function#compose}, but for Consumer. */
+	public static <T, R> Consumer<T> compose(Function<? super T, ? extends R> function, Consumer<? super R> consumer) {
+		return value -> consumer.accept(function.apply(value));
+	}
+
 	/**
 	 * A Consumer which always passes its its input to whatever Consumer is supplied by target.
 	 * <p>
-	 * By passing something mutable, such as a {@link Box}, as
-	 * the input, you can redirect the returned consumer.
+	 * By passing something mutable, such as a {@link Box}, you can redirect the returned consumer.
 	 */
 	public static <T> Consumer<T> redirectable(Supplier<Consumer<T>> target) {
 		return value -> target.get().accept(value);
Added Consumers.compose().