code: private void checkKeyModifications(ModelDef modelDef, String checkLevel) throws ConstraintException
      {
          if (CHECKLEVEL_NONE.equals(checkLevel))
          {
              return;
          }
  
          ClassDescriptorDef classDef;
          FieldDescriptorDef fieldDef;
  
          // we check for every inherited field
          for (Iterator classIt = modelDef.getClasses(); classIt.hasNext();)
          {
              classDef = (ClassDescriptorDef)classIt.next();
              for (Iterator fieldIt = classDef.getFields(); fieldIt.hasNext();)
              {
                  fieldDef = (FieldDescriptorDef)fieldIt.next();
                  if (fieldDef.isInherited())
                  {
                      checkKeyModifications(modelDef, fieldDef);
                  }
              }
          }
      }
docs: Checks the modifications of fields used as foreignkeys in references/collections or the corresponding primarykeys,
  e.g. that the jdbc-type is not changed etc.
  
  @param modelDef   The model to check
  @param checkLevel The current check level (this constraint is checked in basic and strict)
  @throws ConstraintException If such a field has invalid modifications