from typing import Optional


def pluralize(singular: Optional[str]) -> str:
    """Return plural form of given lowercase singular word (English only).

    Based on ActiveState recipe http://code.activestate.com/recipes/413172/

    >>> pluralize('')
    ''
    >>> pluralize('goose')
    'geese'
    >>> pluralize('dolly')
    'dollies'
    >>> pluralize('genius')
    'genii'
    >>> pluralize('jones')
    'joneses'
    >>> pluralize('pass')
    'passes'
    >>> pluralize('zero')
    'zeros'
    >>> pluralize('casino')
    'casinos'
    >>> pluralize('hero')
    'heroes'
    >>> pluralize('church')
    'churches'
    >>> pluralize('x')
    'xs'
    >>> pluralize('car')
    'cars'

    """
    ABERRANT_PLURAL_MAP = {
        "appendix": "appendices",
        "barracks": "barracks",
        "cactus": "cacti",
        "child": "children",
        "criterion": "criteria",
        "deer": "deer",
        "echo": "echoes",
        "elf": "elves",
        "embargo": "embargoes",
        "focus": "foci",
        "fungus": "fungi",
        "goose": "geese",
        "hero": "heroes",
        "hoof": "hooves",
        "index": "indices",
        "knife": "knives",
        "leaf": "leaves",
        "life": "lives",
        "man": "men",
        "mouse": "mice",
        "nucleus": "nuclei",
        "person": "people",
        "phenomenon": "phenomena",
        "potato": "potatoes",
        "self": "selves",
        "syllabus": "syllabi",
        "tomato": "tomatoes",
        "torpedo": "torpedoes",
        "veto": "vetoes",
        "woman": "women",
    }

    VOWELS = frozenset("aeiou")

    if not singular:
        return ""
    plural = ABERRANT_PLURAL_MAP.get(singular)
    if plural:
        return plural
    root = singular
    try:
        if singular[-1] == "y" and singular[-2] not in VOWELS:
            root = singular[:-1]
            suffix = "ies"
        elif singular[-1] == "s":
            if singular[-2] in VOWELS:
                if singular[-3:] == "ius":
                    root = singular[:-2]
                    suffix = "i"
                else:
                    root = singular[:-1]
                    suffix = "ses"
            else:
                suffix = "es"
        elif singular[-2:] in ("ch", "sh"):
            suffix = "es"
        else:
            suffix = "s"
    except IndexError:
        suffix = "s"
    plural = root + suffix
    return plural