@Override
  public void verify() {
    super.verify();
    doWithProperties(
        new PropertyHandler<Neo4jPersistentProperty>() {
          Neo4jPersistentProperty unique = null;

          public void doWithPersistentProperty(Neo4jPersistentProperty persistentProperty) {
            if (persistentProperty.isUnique()) {
              if (unique != null)
                throw new MappingException(
                    "Duplicate unique property "
                        + persistentProperty.getName()
                        + ", "
                        + unique.getName()
                        + " has already been defined. Only one unique property is allowed per type");
              unique = persistentProperty;
            }
          }
        });
    if (isManaged() || getType().isInterface()) {
      return;
    }
    final Neo4jPersistentProperty idProperty = getIdProperty();
    if (idProperty == null) throw new MappingException("No id property in " + this);
    if (idProperty.getType().isPrimitive())
      throw new MappingException(
          "The type of the id-property in "
              + idProperty
              + " must not be a primitive type but an object type like java.lang.Long");
  }
 @Override
 public void addAssociation(
     Association<Neo4jPersistentProperty> neo4jPersistentPropertyAssociation) {
   super.addAssociation(neo4jPersistentPropertyAssociation);
   final Neo4jPersistentProperty property = neo4jPersistentPropertyAssociation.getInverse();
   if (property.isAnnotationPresent(StartNode.class)) {
     this.startNodeProperty = property;
   }
   if (property.isAnnotationPresent(EndNode.class)) {
     this.endNodeProperty = property;
   }
 }
 @Override
 public void addPersistentProperty(Neo4jPersistentProperty property) {
   super.addPersistentProperty(property);
   if (property.isAnnotationPresent(RelationshipType.class)) {
     this.relationshipType = property;
   }
   if (property.isUnique()) {
     if (this.uniqueProperty == null) {
       this.uniqueProperty = property;
     }
   }
 }