@Override
 public int hashCode() {
   int result = type != null ? type.hashCode() : 0;
   result = 31 * result + (interval != null ? interval.hashCode() : 0);
   result = 31 * result + (functions != null ? functions.hashCode() : 0);
   return result;
 }
  @SuppressWarnings("rawtypes")
  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    AggregationTemplate that = (AggregationTemplate) o;

    if (functions != null ? !functions.equals(that.functions) : that.functions != null)
      return false;
    if (interval != null ? !interval.equals(that.interval) : that.interval != null) return false;
    if (type != null ? !type.equals(that.type) : that.type != null) return false;

    return true;
  }