protected virtual void Visit(AssociationType associationType)
 {
     foreach (var endMember in associationType.AssociationEndMembers)
     {
         Visit(endMember);
     }
     Visit(associationType.BaseType);
     foreach (var keyMember in associationType.KeyMembers)
     {
         Visit(keyMember);
     }
     foreach (var member in associationType.GetDeclaredOnlyMembers<EdmMember>())
     {
         Visit(member);
     }
     foreach (var item in associationType.ReferentialConstraints)
     {
         Visit(item);
     }
     foreach (var item in associationType.RelationshipEndMembers)
     {
         Visit(item);
     }
 }