class SurfaceValue {

  public static SurfaceValue plus(final SurfaceValue value1, final SurfaceValue value2) {
    ArgumentChecker.notNull(value1, "Surface value 1");
    ArgumentChecker.notNull(value2, "Surface value 2");
    final HashMap<DoublesPair, Double> plus = new HashMap<>(value1._data);
    for (final DoublesPair p : value2._data.keySet()) {
      if (value1._data.containsKey(p)) {
        plus.put(p, value2._data.get(p) + value1._data.get(p));
      } else {
        plus.put(p, value2._data.get(p));
      }
    }
    return new SurfaceValue(plus);
  }

  public  SurfaceValue();
  private  SurfaceValue(final HashMap<DoublesPair, Double> map);

}