def METHOD_NAME(self, description):
    """Parse or generate location."""
    addr_str = ""
    chi_match = re.search(
        r"(\d{1,5}\s+[^(IL)]{0,150}?Chicago(,\s+IL(\s+\d{5})?)?)",
        description,
        flags=re.DOTALL | re.M,
    )
    springfield_match = re.search(
        r"(\d{1,5}\s+[^(IL)]{0,150}?Springfield(,\s+IL(\s+\d{5})?)?)",
        description,
        flags=re.DOTALL | re.M,
    )
    il_match = re.search(
        r"(\d{1,5}\s+.{0,150}?IL(\s+\d{5})?)", description, flags=re.DOTALL | re.M
    )
    if chi_match:
        addr_str = chi_match.group()
    elif springfield_match:
        addr_str = springfield_match.group()
    elif il_match:
        addr_str = il_match.group()
    if addr_str and "IL" not in addr_str:
        addr_str += ", IL"
    return {
        "address": re.sub(r"\n+", "\n", addr_str).strip(),
        "name": "",
    }