@ SuppressWarnings ( "unchecked" ) protected int hashFields ( int hash , Map < FieldDescriptor , Object > map ) { for ( Map . Entry < FieldDescriptor , Object > entry : map . entrySet ( ) ) { FieldDescriptor field = entry . getKey ( ) ; Object value = entry . getValue ( ) ; hash = ( 37 * hash ) + field . getNumber ( ) ; if ( field . getType ( ) != FieldDescriptor . Type . ENUM ) { hash = ( 53 * hash ) + value . hashCode ( ) ; } else if ( field . isRepeated ( ) ) { List < ? extends EnumLite > list = ( List < ? extends EnumLite > ) value ; hash = ( 53 * hash ) + hashEnumList ( list ) ; } else { hash = ( 53 * hash ) + hashEnum ( ( EnumLite ) value ) ; } } return hash ; }
Get a hash code for given fields and values using the given seed .