You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by pa...@apache.org on 2019/02/08 18:45:13 UTC

[commons-lang] 06/13: Functions.java whitspaces

This is an automated email from the ASF dual-hosted git repository.

pascalschumacher pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git

commit c5eadb1c6d5245526bf895f22957cadec3dfc3b6
Author: Allon Mureinik <mu...@gmail.com>
AuthorDate: Fri Feb 8 19:30:35 2019 +0200

    Functions.java whitspaces
    
    Replace tabs with four spaces, as per the project's Checkstyle rules.
---
 .../java/org/apache/commons/lang3/Functions.java   | 616 ++++++++++-----------
 1 file changed, 308 insertions(+), 308 deletions(-)

diff --git a/src/main/java/org/apache/commons/lang3/Functions.java b/src/main/java/org/apache/commons/lang3/Functions.java
index fac1f3a..903a527 100644
--- a/src/main/java/org/apache/commons/lang3/Functions.java
+++ b/src/main/java/org/apache/commons/lang3/Functions.java
@@ -46,323 +46,323 @@ import java.lang.reflect.UndeclaredThrowableException;
  * Lambda expressions is met better than the second version.
  */
 public class Functions {
-	@FunctionalInterface
-	public interface FailableRunnable<T extends Throwable> {
-		/**
-		 * Runs the function.
-		 * @throws T if the function fails
-		 */
-		void run() throws T;
-	}
-	@FunctionalInterface
-	public interface FailableCallable<O, T extends Throwable> {
-		/**
-		 * Calls the callable.
-		 * @return The value returned from the callable
-		 * @throws T if the callable fails
-		 */
-		O call() throws T;
-	}
-	@FunctionalInterface
-	public interface FailableConsumer<O, T extends Throwable> {
-		/**
-		 * Accepts the consumer.
-		 * @param pObject the parameter for the consumable to accept
-		 * @throws T if the consumer fails
-		 */
-		void accept(O pObject) throws T;
-	}
-	@FunctionalInterface
-	public interface FailableBiConsumer<O1, O2, T extends Throwable> {
-		/**
-		 * Accepts the consumer.
-		 * @param pObject1 the first parameter for the consumable to accept
-		 * @param pObject2 the second parameter for the consumable to accept
-		 * @throws T if the consumer fails
-		 */
-		void accept(O1 pObject1, O2 pObject2) throws T;
-	}
-	@FunctionalInterface
-	public interface FailableFunction<I, O, T extends Throwable> {
-		/**
-		 * Apply the function.
-		 * @param pInput the input for the function
-		 * @return the result of the function
-		 * @throws T if the function fails
-		 */
-		O apply(I pInput) throws T;
-	}
-	@FunctionalInterface
-	public interface FailableBiFunction<I1, I2, O, T extends Throwable> {
-		/**
-		 * Apply the function.
-		 * @param pInput1 the first input for the function
-		 * @param pInput2 the second input for the function
-		 * @return the result of the function
-		 * @throws T if the function fails
-		 */
-		O apply(I1 pInput1, I2 pInput2) throws T;
-	}
-	@FunctionalInterface
-	public interface FailablePredicate<O, T extends Throwable> {
-		/**
-		 * Test the predicate.
-		 * @param pObject the object to test the predicate on
-		 * @return the predicate's evaluation
-		 * @throws T if the predicate fails
-		 */
-		boolean test(O pObject) throws T;
-	}
-	@FunctionalInterface
-	public interface FailableBiPredicate<O1, O2, T extends Throwable> {
-		/**
-		 * Test the predicate.
-		 * @param pObject1 the first object to test the predicate on
-		 * @param pObject2 the second object to test the predicate on
-		 * @return the predicate's evaluation
-		 * @throws T if the predicate fails
-		 */
-		boolean test(O1 pObject1, O2 pObject2) throws T;
-	}
+    @FunctionalInterface
+    public interface FailableRunnable<T extends Throwable> {
+        /**
+         * Runs the function.
+         * @throws T if the function fails
+         */
+        void run() throws T;
+    }
+    @FunctionalInterface
+    public interface FailableCallable<O, T extends Throwable> {
+        /**
+         * Calls the callable.
+         * @return The value returned from the callable
+         * @throws T if the callable fails
+         */
+        O call() throws T;
+    }
+    @FunctionalInterface
+    public interface FailableConsumer<O, T extends Throwable> {
+        /**
+         * Accepts the consumer.
+         * @param pObject the parameter for the consumable to accept
+         * @throws T if the consumer fails
+         */
+        void accept(O pObject) throws T;
+    }
+    @FunctionalInterface
+    public interface FailableBiConsumer<O1, O2, T extends Throwable> {
+        /**
+         * Accepts the consumer.
+         * @param pObject1 the first parameter for the consumable to accept
+         * @param pObject2 the second parameter for the consumable to accept
+         * @throws T if the consumer fails
+         */
+        void accept(O1 pObject1, O2 pObject2) throws T;
+    }
+    @FunctionalInterface
+    public interface FailableFunction<I, O, T extends Throwable> {
+        /**
+         * Apply the function.
+         * @param pInput the input for the function
+         * @return the result of the function
+         * @throws T if the function fails
+         */
+        O apply(I pInput) throws T;
+    }
+    @FunctionalInterface
+    public interface FailableBiFunction<I1, I2, O, T extends Throwable> {
+        /**
+         * Apply the function.
+         * @param pInput1 the first input for the function
+         * @param pInput2 the second input for the function
+         * @return the result of the function
+         * @throws T if the function fails
+         */
+        O apply(I1 pInput1, I2 pInput2) throws T;
+    }
+    @FunctionalInterface
+    public interface FailablePredicate<O, T extends Throwable> {
+        /**
+         * Test the predicate.
+         * @param pObject the object to test the predicate on
+         * @return the predicate's evaluation
+         * @throws T if the predicate fails
+         */
+        boolean test(O pObject) throws T;
+    }
+    @FunctionalInterface
+    public interface FailableBiPredicate<O1, O2, T extends Throwable> {
+        /**
+         * Test the predicate.
+         * @param pObject1 the first object to test the predicate on
+         * @param pObject2 the second object to test the predicate on
+         * @return the predicate's evaluation
+         * @throws T if the predicate fails
+         */
+        boolean test(O1 pObject1, O2 pObject2) throws T;
+    }
 
-	/**
-	 * Runs a runnable and rethrows any exception as a {@link RuntimeException}.
-	 * @param pRunnable The runnable to run
-	 * @param <T> the type of checked exception the runnable may throw
-	 */
-	public static <T extends Throwable> void run(FailableRunnable<T> pRunnable) {
-		try {
-			pRunnable.run();
-		} catch (Throwable t) {
-			throw rethrow(t);
-		}
-	}
+    /**
+     * Runs a runnable and rethrows any exception as a {@link RuntimeException}.
+     * @param pRunnable The runnable to run
+     * @param <T> the type of checked exception the runnable may throw
+     */
+    public static <T extends Throwable> void run(FailableRunnable<T> pRunnable) {
+        try {
+            pRunnable.run();
+        } catch (Throwable t) {
+            throw rethrow(t);
+        }
+    }
 
-	/**
-	 * Calls a callable and rethrows any exception as a {@link RuntimeException}.
-	 * @param pCallable the callable to call
-	 * @param <O> the return type of the callable
-	 * @param <T> the type of checked exception the callable may throw
-	 * @return the value returned from the callable
-	 */
-	public static <O, T extends Throwable> O call(FailableCallable<O, T> pCallable) {
-		try {
-			return pCallable.call();
-		} catch (Throwable t) {
-			throw rethrow(t);
-		}
-	}
+    /**
+     * Calls a callable and rethrows any exception as a {@link RuntimeException}.
+     * @param pCallable the callable to call
+     * @param <O> the return type of the callable
+     * @param <T> the type of checked exception the callable may throw
+     * @return the value returned from the callable
+     */
+    public static <O, T extends Throwable> O call(FailableCallable<O, T> pCallable) {
+        try {
+            return pCallable.call();
+        } catch (Throwable t) {
+            throw rethrow(t);
+        }
+    }
 
-	/**
-	 * Consumes a consumer and rethrows any exception as a {@link RuntimeException}.
-	 * @param pConsumer the consumer to consume
-	 * @param pObject the object to consume by <code>pConsumer</code>
-	 * @param <O> the type the consumer accepts
-	 * @param <T> the type of checked exception the consumer may throw
-	 */
-	public static <O, T extends Throwable> void accept(FailableConsumer<O, T> pConsumer, O pObject) {
-		try {
-			pConsumer.accept(pObject);
-		} catch (Throwable t) {
-			throw rethrow(t);
-		}
-	}
+    /**
+     * Consumes a consumer and rethrows any exception as a {@link RuntimeException}.
+     * @param pConsumer the consumer to consume
+     * @param pObject the object to consume by <code>pConsumer</code>
+     * @param <O> the type the consumer accepts
+     * @param <T> the type of checked exception the consumer may throw
+     */
+    public static <O, T extends Throwable> void accept(FailableConsumer<O, T> pConsumer, O pObject) {
+        try {
+            pConsumer.accept(pObject);
+        } catch (Throwable t) {
+            throw rethrow(t);
+        }
+    }
 
-	/**
-	 * Consumes a consumer and rethrows any exception as a {@link RuntimeException}.
-	 * @param pConsumer the consumer to consume
-	 * @param pObject1 the first object to consume by <code>pConsumer</code>
-	 * @param pObject2 the second object to consume by <code>pConsumer</code>
-	 * @param <O1> the type of the first argument the consumer accepts
-	 * @param <O2> the type of the second argument the consumer accepts
-	 * @param <T> the type of checked exception the consumer may throw
-	 */
-	public static <O1, O2, T extends Throwable> void accept(FailableBiConsumer<O1, O2, T> pConsumer, O1 pObject1, O2 pObject2) {
-		try {
-			pConsumer.accept(pObject1, pObject2);
-		} catch (Throwable t) {
-			throw rethrow(t);
-		}
-	}
+    /**
+     * Consumes a consumer and rethrows any exception as a {@link RuntimeException}.
+     * @param pConsumer the consumer to consume
+     * @param pObject1 the first object to consume by <code>pConsumer</code>
+     * @param pObject2 the second object to consume by <code>pConsumer</code>
+     * @param <O1> the type of the first argument the consumer accepts
+     * @param <O2> the type of the second argument the consumer accepts
+     * @param <T> the type of checked exception the consumer may throw
+     */
+    public static <O1, O2, T extends Throwable> void accept(FailableBiConsumer<O1, O2, T> pConsumer, O1 pObject1, O2 pObject2) {
+        try {
+            pConsumer.accept(pObject1, pObject2);
+        } catch (Throwable t) {
+            throw rethrow(t);
+        }
+    }
 
-	/**
-	 * Applies a function and rethrows any exception as a {@link RuntimeException}.
-	 * @param pFunction the function to apply
-	 * @param pInput the input to apply <code>pFunction</code> on
-	 * @param <I> the type of the argument the function accepts
-	 * @param <O> the return type of the function
-	 * @param <T> the type of checked exception the function may throw
-	 * @return the value returned from the function
-	 */
-	public static <I, O, T extends Throwable> O apply(FailableFunction<I, O, T> pFunction, I pInput) {
-		try {
-			return pFunction.apply(pInput);
-		} catch (Throwable t) {
-			throw rethrow(t);
-		}
-	}
+    /**
+     * Applies a function and rethrows any exception as a {@link RuntimeException}.
+     * @param pFunction the function to apply
+     * @param pInput the input to apply <code>pFunction</code> on
+     * @param <I> the type of the argument the function accepts
+     * @param <O> the return type of the function
+     * @param <T> the type of checked exception the function may throw
+     * @return the value returned from the function
+     */
+    public static <I, O, T extends Throwable> O apply(FailableFunction<I, O, T> pFunction, I pInput) {
+        try {
+            return pFunction.apply(pInput);
+        } catch (Throwable t) {
+            throw rethrow(t);
+        }
+    }
 
-	/**
-	 * Applies a function and rethrows any exception as a {@link RuntimeException}.
-	 * @param pFunction the function to apply
-	 * @param pInput1 the first input to apply <code>pFunction</code> on
-	 * @param pInput2 the second input to apply <code>pFunction</code> on
-	 * @param <I1> the type of the first argument the function accepts
-	 * @param <I2> the type of the second argument the function accepts
-	 * @param <O> the return type of the function
-	 * @param <T> the type of checked exception the function may throw
-	 * @return the value returned from the function
-	 */
-	public static <I1, I2, O, T extends Throwable> O apply(FailableBiFunction<I1, I2, O, T> pFunction, I1 pInput1, I2 pInput2) {
-		try {
-			return pFunction.apply(pInput1, pInput2);
-		} catch (Throwable t) {
-			throw rethrow(t);
-		}
-	}
+    /**
+     * Applies a function and rethrows any exception as a {@link RuntimeException}.
+     * @param pFunction the function to apply
+     * @param pInput1 the first input to apply <code>pFunction</code> on
+     * @param pInput2 the second input to apply <code>pFunction</code> on
+     * @param <I1> the type of the first argument the function accepts
+     * @param <I2> the type of the second argument the function accepts
+     * @param <O> the return type of the function
+     * @param <T> the type of checked exception the function may throw
+     * @return the value returned from the function
+     */
+    public static <I1, I2, O, T extends Throwable> O apply(FailableBiFunction<I1, I2, O, T> pFunction, I1 pInput1, I2 pInput2) {
+        try {
+            return pFunction.apply(pInput1, pInput2);
+        } catch (Throwable t) {
+            throw rethrow(t);
+        }
+    }
 
-	/**
-	 * Tests a predicate and rethrows any exception as a {@link RuntimeException}.
-	 * @param pPredicate the predicate to test
-	 * @param pObject the input to test by <code>pPredicate</code>
-	 * @param <O> the type of argument the predicate tests
-	 * @param <T> the type of checked exception the predicate may throw
-	 * @return the boolean value returned by the predicate
-	 */
-	public static <O, T extends Throwable> boolean test(FailablePredicate<O, T> pPredicate, O pObject) {
-		try {
-			return pPredicate.test(pObject);
-		} catch (Throwable t) {
-			throw rethrow(t);
-		}
-	}
+    /**
+     * Tests a predicate and rethrows any exception as a {@link RuntimeException}.
+     * @param pPredicate the predicate to test
+     * @param pObject the input to test by <code>pPredicate</code>
+     * @param <O> the type of argument the predicate tests
+     * @param <T> the type of checked exception the predicate may throw
+     * @return the boolean value returned by the predicate
+     */
+    public static <O, T extends Throwable> boolean test(FailablePredicate<O, T> pPredicate, O pObject) {
+        try {
+            return pPredicate.test(pObject);
+        } catch (Throwable t) {
+            throw rethrow(t);
+        }
+    }
 
-	/**
-	 * Tests a predicate and rethrows any exception as a {@link RuntimeException}.
-	 * @param pPredicate the predicate to test
-	 * @param pObject1 the first input to test by <code>pPredicate</code>
-	 * @param pObject2 the second input to test by <code>pPredicate</code>
-	 * @param <O1> the type of the first argument the predicate tests
-	 * @param <O2> the type of the second argument the predicate tests
-	 * @param <T> the type of checked exception the predicate may throw
-	 * @return the boolean value returned by the predicate
-	 */
-	public static <O1, O2, T extends Throwable> boolean test(FailableBiPredicate<O1, O2, T> pPredicate, O1 pObject1, O2 pObject2) {
-		try {
-			return pPredicate.test(pObject1, pObject2);
-		} catch (Throwable t) {
-			throw rethrow(t);
-		}
-	}
+    /**
+     * Tests a predicate and rethrows any exception as a {@link RuntimeException}.
+     * @param pPredicate the predicate to test
+     * @param pObject1 the first input to test by <code>pPredicate</code>
+     * @param pObject2 the second input to test by <code>pPredicate</code>
+     * @param <O1> the type of the first argument the predicate tests
+     * @param <O2> the type of the second argument the predicate tests
+     * @param <T> the type of checked exception the predicate may throw
+     * @return the boolean value returned by the predicate
+     */
+    public static <O1, O2, T extends Throwable> boolean test(FailableBiPredicate<O1, O2, T> pPredicate, O1 pObject1, O2 pObject2) {
+        try {
+            return pPredicate.test(pObject1, pObject2);
+        } catch (Throwable t) {
+            throw rethrow(t);
+        }
+    }
 
-	/**
-	 * A simple try-with-resources implementation, that can be used, if your
-	 * objects do not implement the {@link AutoCloseable} interface. The method
-	 * executes the {@code pAction}. The method guarantees, that <em>all</em>
-	 * the {@code pResources} are being executed, in the given order, afterwards,
-	 * and regardless of success, or failure. If either the original action, or
-	 * any of the resource action fails, then the <em>first</em> failure (aka
-	 * {@link Throwable} is rethrown. Example use:
-	 * <pre>
-	 *   final FileInputStream fis = new FileInputStream("my.file");
-	 *   Functions.tryWithResources(useInputStream(fis), null, () -> fis.close());
-	 * </pre>
-	 * @param pAction The action to execute. This object <em>will</em> always
-	 *   be invoked.
-	 * @param pErrorHandler An optional error handler, which will be invoked finally,
-	 *   if any error occurred. The error handler will receive the first
-	 *   error, aka {@link Throwable}.
-	 * @param pResources The resource actions to execute. <em>All</em> resource
-	 *   actions will be invoked, in the given order. A resource action is an
-	 *   instance of {@link FailableRunnable}, which will be executed.
-	 * @see #tryWithResources(FailableRunnable, FailableRunnable...)
-	 */
-	@SafeVarargs
-	public static void tryWithResources(FailableRunnable<? extends Throwable> pAction,
-			                                FailableConsumer<Throwable, ? extends Throwable> pErrorHandler,
-											FailableRunnable<? extends Throwable>... pResources) {
-		final FailableConsumer<Throwable, ? extends Throwable> errorHandler;
-		if (pErrorHandler == null) {
-			errorHandler = (t) -> rethrow(t);
-		} else {
-			errorHandler = pErrorHandler;
-		}
-		if (pResources != null) {
-			for (FailableRunnable<? extends Throwable> runnable : pResources) {
-				if (runnable == null) {
-					throw new NullPointerException("A resource action must not be null.");
-				}
-			}
-		}
-		Throwable th = null;
-		try {
-			pAction.run();
-		} catch (Throwable t) {
-			th = t;
-		}
-		if (pResources != null) {
-			for (FailableRunnable<? extends Object> runnable : pResources) {
-				try {
-					runnable.run();
-				} catch (Throwable t) {
-					if (th == null) {
-						th = t;
-					}
-				}
-			}
-		}
-		if (th != null) {
-			try {
-				errorHandler.accept(th);
-			} catch (Throwable t) {
-				throw rethrow(t);
-			}
-		}
-	}
+    /**
+     * A simple try-with-resources implementation, that can be used, if your
+     * objects do not implement the {@link AutoCloseable} interface. The method
+     * executes the {@code pAction}. The method guarantees, that <em>all</em>
+     * the {@code pResources} are being executed, in the given order, afterwards,
+     * and regardless of success, or failure. If either the original action, or
+     * any of the resource action fails, then the <em>first</em> failure (aka
+     * {@link Throwable} is rethrown. Example use:
+     * <pre>
+     *   final FileInputStream fis = new FileInputStream("my.file");
+     *   Functions.tryWithResources(useInputStream(fis), null, () -> fis.close());
+     * </pre>
+     * @param pAction The action to execute. This object <em>will</em> always
+     *   be invoked.
+     * @param pErrorHandler An optional error handler, which will be invoked finally,
+     *   if any error occurred. The error handler will receive the first
+     *   error, aka {@link Throwable}.
+     * @param pResources The resource actions to execute. <em>All</em> resource
+     *   actions will be invoked, in the given order. A resource action is an
+     *   instance of {@link FailableRunnable}, which will be executed.
+     * @see #tryWithResources(FailableRunnable, FailableRunnable...)
+     */
+    @SafeVarargs
+    public static void tryWithResources(FailableRunnable<? extends Throwable> pAction,
+                                            FailableConsumer<Throwable, ? extends Throwable> pErrorHandler,
+                                            FailableRunnable<? extends Throwable>... pResources) {
+        final FailableConsumer<Throwable, ? extends Throwable> errorHandler;
+        if (pErrorHandler == null) {
+            errorHandler = (t) -> rethrow(t);
+        } else {
+            errorHandler = pErrorHandler;
+        }
+        if (pResources != null) {
+            for (FailableRunnable<? extends Throwable> runnable : pResources) {
+                if (runnable == null) {
+                    throw new NullPointerException("A resource action must not be null.");
+                }
+            }
+        }
+        Throwable th = null;
+        try {
+            pAction.run();
+        } catch (Throwable t) {
+            th = t;
+        }
+        if (pResources != null) {
+            for (FailableRunnable<? extends Object> runnable : pResources) {
+                try {
+                    runnable.run();
+                } catch (Throwable t) {
+                    if (th == null) {
+                        th = t;
+                    }
+                }
+            }
+        }
+        if (th != null) {
+            try {
+                errorHandler.accept(th);
+            } catch (Throwable t) {
+                throw rethrow(t);
+            }
+        }
+    }
 
-	/**
-	 * A simple try-with-resources implementation, that can be used, if your
-	 * objects do not implement the {@link AutoCloseable} interface. The method
-	 * executes the {@code pAction}. The method guarantees, that <em>all</em>
-	 * the {@code pResources} are being executed, in the given order, afterwards,
-	 * and regardless of success, or failure. If either the original action, or
-	 * any of the resource action fails, then the <em>first</em> failure (aka
-	 * {@link Throwable} is rethrown. Example use:
-	 * <pre>
-	 *   final FileInputStream fis = new FileInputStream("my.file");
-	 *   Functions.tryWithResources(useInputStream(fis), () -> fis.close());
-	 * </pre>
-	 * @param pAction The action to execute. This object <em>will</em> always
-	 *   be invoked.
-	 * @param pResources The resource actions to execute. <em>All</em> resource
-	 *   actions will be invoked, in the given order. A resource action is an
-	 *   instance of {@link FailableRunnable}, which will be executed.
-	 * @see #tryWithResources(FailableRunnable, FailableConsumer, FailableRunnable...)
-	 */
-	@SafeVarargs
-	public static void tryWithResources(FailableRunnable<? extends Throwable> pAction,
-											FailableRunnable<? extends Throwable>... pResources) {
-		tryWithResources(pAction, null, pResources);
-	}
+    /**
+     * A simple try-with-resources implementation, that can be used, if your
+     * objects do not implement the {@link AutoCloseable} interface. The method
+     * executes the {@code pAction}. The method guarantees, that <em>all</em>
+     * the {@code pResources} are being executed, in the given order, afterwards,
+     * and regardless of success, or failure. If either the original action, or
+     * any of the resource action fails, then the <em>first</em> failure (aka
+     * {@link Throwable} is rethrown. Example use:
+     * <pre>
+     *   final FileInputStream fis = new FileInputStream("my.file");
+     *   Functions.tryWithResources(useInputStream(fis), () -> fis.close());
+     * </pre>
+     * @param pAction The action to execute. This object <em>will</em> always
+     *   be invoked.
+     * @param pResources The resource actions to execute. <em>All</em> resource
+     *   actions will be invoked, in the given order. A resource action is an
+     *   instance of {@link FailableRunnable}, which will be executed.
+     * @see #tryWithResources(FailableRunnable, FailableConsumer, FailableRunnable...)
+     */
+    @SafeVarargs
+    public static void tryWithResources(FailableRunnable<? extends Throwable> pAction,
+                                            FailableRunnable<? extends Throwable>... pResources) {
+        tryWithResources(pAction, null, pResources);
+    }
 
-	/**
-	 * Rethrow a {@link Throwable} as an unchecked exception.
-	 * @param pThrowable The throwable to rethrow
-	 * @return Never returns anything, this method never terminates normally
-	 */
-	public static RuntimeException rethrow(Throwable pThrowable) {
-		if (pThrowable == null) {
-			throw new NullPointerException("The Throwable must not be null.");
-		} else {
-			if (pThrowable instanceof RuntimeException) {
-				throw (RuntimeException) pThrowable;
-			} else if (pThrowable instanceof Error) {
-				throw (Error) pThrowable;
-			} else if (pThrowable instanceof IOException) {
-				throw new UncheckedIOException((IOException) pThrowable);
-			} else {
-				throw new UndeclaredThrowableException(pThrowable);
-			}
-		}
-	}
+    /**
+     * Rethrow a {@link Throwable} as an unchecked exception.
+     * @param pThrowable The throwable to rethrow
+     * @return Never returns anything, this method never terminates normally
+     */
+    public static RuntimeException rethrow(Throwable pThrowable) {
+        if (pThrowable == null) {
+            throw new NullPointerException("The Throwable must not be null.");
+        } else {
+            if (pThrowable instanceof RuntimeException) {
+                throw (RuntimeException) pThrowable;
+            } else if (pThrowable instanceof Error) {
+                throw (Error) pThrowable;
+            } else if (pThrowable instanceof IOException) {
+                throw new UncheckedIOException((IOException) pThrowable);
+            } else {
+                throw new UndeclaredThrowableException(pThrowable);
+            }
+        }
+    }
 }