public Object entityToBean(@NotNull PropertyContainer entity, @NotNull Object bean) {
   Object value = entity.getProperty(propertyName, null);
   if (converter != null && value != null) {
     value = converter.fromNeo4j(value);
   }
   writeBeanValue(bean, value);
   return value;
 }
 public Object beanToEntity(@NotNull PropertyContainer entity, @NotNull Object bean) {
   Object value = readBeanValue(bean);
   if (converter != null && value != null) {
     value = converter.toNeo4j(value);
   }
   boolean updateIndex = false;
   Object oldValue = null;
   if (indexMapping != null) {
     oldValue = entity.getProperty(propertyName, null);
     updateIndex = !Neo4jUtils.equals(oldValue, value);
   }
   if (value != null) {
     entity.setProperty(propertyName, value);
   } else {
     entity.removeProperty(propertyName);
   }
   if (updateIndex) {
     indexMapping.update(entity, oldValue, value);
   }
   return value;
 }