code: public Money[] share(int numberOfShares) {
  	if (numberOfShares <= 0) {
  	    throw new IllegalArgumentException("Number of shares has to be greater than zero.");
  	}
  	int ratios[] = new int[numberOfShares];
  	Arrays.fill(ratios, 1);
  	long[] amountAllocation = MoneyMath.allocate(amount, ratios);
  	Money allocation[] = new Money[ratios.length];
  	for (int i = 0; i < ratios.length; i++) {
  	    allocation[i] = new Money(currency, fraction, amountAllocation[i]);
  	}
  	return allocation;
      }
docs: The method calculates equal shares. Only the number of shares need to be
  specified.
  
  <b>Attention:</b> It is not guaranteed that all shares have an equal amount
  due to the side condition that the sum of all shares need to be
  <b>exactly</b> the source amount of money. The error of the share difference
  is maximal the amount of the smallest possible money amount.
  
  @param numberOfShares
  is the number of shares the current amount of money is split into.
  @return An array of {@link Money} is returned containing the shares.