def METHOD_NAME(self):
    curve = self._edge.EdgeCurve
    domain = [self._edge.Domain[0], self._edge.Domain[1]]
    _, frame = curve.FrameAt(0)
    if isinstance(curve, LineCurve):
        return "line", curve_to_compas_line(curve), frame, domain
    if isinstance(curve, NurbsCurve):
        return "nurbs", RhinoNurbsCurve.from_rhino(curve), frame, domain
    if isinstance(curve, ArcCurve):
        if not curve.IsClosed:
            return "arc", arc_to_compas(curve.Arc), curve.Arc.Plane, domain
        is_circle, circle = curve.TryGetCircle()
        if is_circle:
            return "circle", circle_to_compas(circle), circle.Plane, domain
        is_ellipse, ellipse = curve.TryGetEllipse()
        if is_ellipse:
            return "ellipse", ellipse_to_compas(ellipse), ellipse.Plane, domain
        return "nurbs", curve.ToNurbsCurve(), frame, domain
    raise ValueError("Unknown curve type: {}".format(curve.__class__.__name__))