def METHOD_NAME(
    edge_color: Optional[str] = None,
    face_color: Optional[str] = None,
    edge_opacity: Optional[RealType] = None,
    face_opacity: Optional[RealType] = None,
    stroke_width=None,
    is_face_element=False,
    dotfactor=None,
    fontsize: Optional[RealType] = None,
) -> str:
    """
    Return an asymptote string fragment that creates a drawing pen.
    """
    result = []
    if face_color is not None:
        brush, opacity = asy_color(face_color)
        if opacity is None:
            opacity = face_opacity
        if opacity is not None and opacity != 1:
            brush += f"+opacity({asy_number(opacity)})"
        if dotfactor is not None:
            brush += f"+{dotfactor}"
        result.append(brush)
    elif is_face_element:
        result.append("nullpen")
    if edge_color is not None:
        pen, opacity = asy_color(edge_color)
        if opacity is None:
            opacity = edge_opacity
        if opacity is not None and opacity != 1:
            pen += f"+opacity({asy_number(opacity)})"
        if fontsize is not None:
            pen += f"+fontsize({fontsize})"
        if stroke_width is not None:
            pen += f"+linewidth({asy_number(stroke_width)})"
        result.append(pen)
    elif is_face_element:
        result.append("nullpen")
    pen_str = ", ".join(result)
    # print(pen_str)
    return pen_str