code: private void processField(Field field) {
      PropertyMetadata propertyMetadata = IntrospectionUtils.getPropertyMetadata(field);
      if (propertyMetadata != null) {
        // If the field is from a super class, there might be some
        // overrides, so process those.
        if (!field.getDeclaringClass().equals(entityClass)) {
          applyPropertyOverride(propertyMetadata);
        }
        entityMetadata.putPropertyMetadata(propertyMetadata);
        if (field.isAnnotationPresent(Version.class)) {
          processVersionField(propertyMetadata);
        } else if (field.isAnnotationPresent(CreatedTimestamp.class)) {
          processCreatedTimestampField(propertyMetadata);
        } else if (field.isAnnotationPresent(UpdatedTimestamp.class)) {
          processUpdatedTimestampField(propertyMetadata);
        }
      }
    }
docs: Processes the given field and generates the metadata.
  
  @param field
  the field to process