code: protected Set<String> hydrate(Map<String, Object> attributesMap, boolean fireAfterLoad) {
  
          Set<String> changedAttributeNames = new HashSet<>();
          Set<String> attributeNames = metaModelLocal.getAttributeNames();
          for (Map.Entry<String, Object> entry : attributesMap.entrySet()) {
              if (attributeNames.contains(entry.getKey()) ) {
  
                  if (entry.getValue() instanceof Clob && metaModelLocal.cached()) {
                      String convertedString = Convert.toString(entry.getValue());
                      if (willAttributeModifyModel(entry.getKey(), convertedString)) {
                          this.attributes.put(entry.getKey(), convertedString);
                          changedAttributeNames.add(entry.getKey());
                      }
                  } else {
                      Object convertedObject = metaModelLocal.getDialect().overrideDriverTypeConversion(
                              metaModelLocal, entry.getKey(), entry.getValue());
                      if (willAttributeModifyModel(entry.getKey(), convertedObject)) {
                          this.attributes.put(entry.getKey(), convertedObject);
                          changedAttributeNames.add(entry.getKey());
                      }
                  }
              }
          }
          if (getCompositeKeys() != null){
              compositeKeyPersisted = true;
          }
          if(fireAfterLoad){
              fireAfterLoad();
          }
  
          return changedAttributeNames;
      }
docs: Hydrates a this instance of model from a map. Only picks values from a map that match
  this instance's attribute names, while ignoring the others.
  
  @param attributesMap
  @param fireAfterLoad
  @return the set of changed (i.e. dirty) attribute names