code: private long mixInHash(long hash, StorableProperty<?> property, int multiplier) {
          hash = mixInHash(hash, property.getName(), multiplier);
          hash = mixInHash(hash, property.getType().getName(), multiplier);
          hash = hash * multiplier + (property.isNullable() ? 1 : 2);
          hash = hash * multiplier + (property.isPrimaryKeyMember() ? 1 : 2);
  
          // Keep this in for compatibility with prior versions of hash code.
          hash = hash * multiplier + 1;
  
          if (property.getAdapter() != null) {
              // Keep this in for compatibility with prior versions of hash code.
              hash += 1;
  
              StorablePropertyAdapter adapter = property.getAdapter();
              StorablePropertyAnnotation annotation = adapter.getAnnotation();
  
              hash = mixInHash(hash, annotation.getAnnotationType().getName(), multiplier);
  
              // Annotation may contain parameters which affect how property
              // value is stored. So mix that in too.
              Annotation ann = annotation.getAnnotation();
              if (ann != null) {
                  hash = hash * multiplier + annHashCode(ann);
              }
          }
  
          return hash;
      }
docs: Creates a long hash code that attempts to mix in all relevant layout
  elements.