def METHOD_NAME(tokens: List[str]) -> Condition:
    """
    Creates a dependent condition from the tokens.
    Dependency Types:
        "UOC": Will immediately be followed by a digit.
        "L\d", "CODE", "CORES": Wants
    """
    # Don't need a loop here. Don't ever add a loop here, no matter
    # how tempting it is when expanding functionality.
    # The responsibility should be on the tokeniser to ensure that the
    # tokens are cleaned and legible.
    index: int = 0
    base_token: str = tokens[index]
    if base_token == "UOC":
        # Guaranteed. Also guaranteed to be the only prefix
        num_uoc = int(tokens[index + 1])
        return UOCCondition(num_uoc)
        # Maybe assert that this is the end?
    # Matching LevelCategory
    if re.match("L\d", base_token):
        index += 1
        level = int(base_token[1:])
        level_category = LevelCategory(level)
        # Next is either `CORES` by itself -> just a CoreCondition w/ Level
        # or: `FACULTY` -> CoreCondition w/ Level and Faculty
        second_token: str = tokens[index]
        # 'CORES' w/ level
        if second_token == "CORES":
            core_condition = CoresCondition()
            core_condition.set_category(level_category)
            return core_condition
        index += 1
        # CoreCondition w/ Level and Faculty;
        # Don't read third token because it's just `"CORES"`; Token2 is faculty
        faculty = second_token
        composite_category = LevelCourseCategory(level, faculty)
        core_condition = CoresCondition()
        core_condition.set_category(composite_category)
        return core_condition
    # This should literally never happen and indicates you have broken smth
    raise UnparseableError(tokens)