private int getListHash() {
    if (subKeys == null) return 0;
    int result = 1;
    for (DataDescriptor e : subKeys)
      result = 31*result + (e==null ? 0 : e.hashCode2());
    return result;
  }
private int getListHash() {
    if (subKeys == null) return 0;
    int result = 1;
    for (DataDescriptor e : subKeys)
      result = 31*result + (e==null ? 0 : e.hashCode2());
    return result;
  }
private int getListHash ( ) { if ( subKeys == null ) return 0 ; int result = 1 ; for ( DataDescriptor e : subKeys ) result = 31 * result + ( e == null ? 0 : e . hashCode2 ( ) ) ; return result ; }
has to use hashCode2, so cant use list.hashCode()
has to use hashCode2 so cant use list . hashCode ()