code: public boolean deleteEdgeReference(AtlasEdge edge, DataTypes.TypeCategory typeCategory, boolean isComposite,
                                      boolean forceDeleteStructTrait) throws AtlasException {
          if (LOG.isDebugEnabled()) {
              LOG.debug("Deleting {}", string(edge));
          }
  
          boolean forceDelete =
                  (typeCategory == DataTypes.TypeCategory.STRUCT || typeCategory == DataTypes.TypeCategory.TRAIT) && forceDeleteStructTrait;
          if (typeCategory == DataTypes.TypeCategory.STRUCT || typeCategory == DataTypes.TypeCategory.TRAIT
                  || (typeCategory == DataTypes.TypeCategory.CLASS && isComposite)) {
              //If the vertex is of type struct/trait, delete the edge and then the reference vertex as the vertex is not shared by any other entities.
              //If the vertex is of type class, and its composite attribute, this reference vertex' lifecycle is controlled
              //through this delete, hence delete the edge and the reference vertex.
              AtlasVertex vertexForDelete = edge.getInVertex();
  
              //If deleting the edge and then the in vertex, reverse attribute shouldn't be updated
              deleteEdge(edge, false, forceDelete);
              deleteTypeVertex(vertexForDelete, typeCategory, forceDelete);
          } else {
              //If the vertex is of type class, and its not a composite attributes, the reference AtlasVertex' lifecycle is not controlled
              //through this delete. Hence just remove the reference edge. Leave the reference AtlasVertex as is
  
              //If deleting just the edge, reverse attribute should be updated for any references
              //For example, for the department type system, if the person's manager edge is deleted, subordinates of manager should be updated
              deleteEdge(edge, true, false);
          }
          return !softDelete || forceDelete;
      }
docs: Force delete is used to remove struct/trait in case of entity updates
  @param edge
  @param typeCategory
  @param isComposite
  @param forceDeleteStructTrait
  @return returns true if the edge reference is hard deleted
  @throws AtlasException