improve iteratorRecursive, slightly modify hashCode