/** @see Object#hashCode() */
 public int hashCode() {
   int result;
   long temp;
   result = (articleNumber != null ? articleNumber.hashCode() : 0);
   result = 29 * result + (unit != null ? unit.hashCode() : 0);
   temp = price != +0.0d ? Double.doubleToLongBits(price) : 0L;
   result = 29 * result + (int) (temp ^ (temp >>> 32));
   temp = inStock != +0.0d ? Double.doubleToLongBits(inStock) : 0L;
   result = 29 * result + (int) (temp ^ (temp >>> 32));
   temp = bundleCapacity != +0.0d ? Double.doubleToLongBits(bundleCapacity) : 0L;
   result = 29 * result + (int) (temp ^ (temp >>> 32));
   result = 29 * result + (bundleUnit != null ? bundleUnit.hashCode() : 0);
   result = 29 * result + (descriptions != null ? descriptions.hashCode() : 0);
   return result;
 }
  /**
   * Es wird dieser <code>Article</code> mit dem eingehenden Objekt auf Gleichheit überprüft.
   *
   * @see Object#equals(Object)
   */
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    final Article article = (Article) o;

    if (Double.compare(article.bundleCapacity, bundleCapacity) != 0) return false;
    if (Double.compare(article.inStock, inStock) != 0) return false;
    if (Double.compare(article.price, price) != 0) return false;
    if (articleNumber != null
        ? !articleNumber.equals(article.articleNumber)
        : article.articleNumber != null) return false;
    if (bundleUnit != null ? !bundleUnit.equals(article.bundleUnit) : article.bundleUnit != null)
      return false;
    if (descriptions != null
        ? !descriptions.equals(article.descriptions)
        : article.descriptions != null) return false;
    return !(unit != null ? !unit.equals(article.unit) : article.unit != null);
  }