code: public Closure<V> ncurry(int n, final Object... arguments) {
          return new CurriedClosure<V>(n, this, arguments);
      }
docs: Support for Closure currying at a given index.
  Parameters are supplied from index position "n".
  Typical usage:
  <pre>
  def caseInsensitive = { a, b {@code ->} a.toLowerCase() {@code <=>} b.toLowerCase() } as Comparator
  def caseSensitive = { a, b {@code ->} a {@code <=>} b } as Comparator
  def animals1 = ['ant', 'dog', 'BEE']
  def animals2 = animals1 + ['Cat']
  // curry middle param of this utility method:
  // Collections#binarySearch(List list, Object key, Comparator c)
  {@code def catSearcher = Collections.&binarySearch.ncurry(1, "cat")}
  [[animals1, animals2], [caseInsensitive, caseSensitive]].combinations().each{ a, c {@code ->}
  def idx = catSearcher(a.sort(c), c)
  print a.sort(c).toString().padRight(22)
  {@code if (idx < 0) println "Not found but would belong in position ${-idx - 1}"}
  else println "Found at index $idx"
  }
  // {@code =>}
  // [ant, BEE, dog]       Not found but would belong in position 2
  // [ant, BEE, Cat, dog]  Found at index 2
  // [BEE, ant, dog]       Not found but would belong in position 2
  // [BEE, Cat, ant, dog]  Not found but would belong in position 3
  </pre>
  
  The position of the curried parameters will be calculated eagerly
  and implies all arguments prior to the specified n index are supplied.
  Default parameter values prior to the n index will not be available.
  
  @param n the index from which to bind parameters (may be -ve in which case it will be normalized)
  @param arguments the arguments to bind
  @return the new closure with its arguments bound
  @see #curry(Object...)