code: @Pure
  	public static <P1, P2, P3> Procedure2<P2, P3> curry(final Procedure3<? super P1, ? super P2, ? super P3> procedure, final P1 argument) {
  		if (procedure == null)
  			throw new NullPointerException("procedure");
  		return new Procedure2<P2, P3>() {
  			@Override
  			public void apply(P2 p2, P3 p3) {
  				procedure.apply(argument, p2, p3);
  			}
  		};
  	}
docs: Curries a procedure that takes three arguments.
  
  @param procedure
  the original procedure. May not be <code>null</code>.
  @param argument
  the fixed first argument of {@code procedure}.
  @return a procedure that takes two arguments. Never <code>null</code>.