def METHOD_NAME(search_dir,
                          cmp_types_list,
                          create_from_search_dir=False):
    """
    Parses the provided directory and returns a list of objects of the
    types in cmp_types_list.
    Arguments:
        search_dir: directory to parse
        cmp_types_list: This methods checks the subfolders in search_dir
                              against the _get_component types provided
        in this list.
    Example:
        _create_subcomponents(search_dir,
                              [LinkButton, PushButton, or ToggleButton])
        this method creates LinkButton, PushButton, or ToggleButton for
        the parsed sub-directories under search_dir with matching .type_id
        identifiers in their names. (e.g. "folder.LINK_BUTTON_POSTFIX")
    Returns:
        list of created classes of types provided in cmp_types_list
    """
    sub_cmp_list = []
    if not create_from_search_dir:
        mlogger.debug('Searching directory: %s for components of type: %s',
                      search_dir, cmp_types_list)
        for file_or_dir in os.listdir(search_dir):
            full_path = op.join(search_dir, file_or_dir)
            if not file_or_dir.startswith(('.', '_')):
                sub_cmp_list.extend(_get_discovered_comps(full_path,
                                                          cmp_types_list))
            else:
                mlogger.debug('Skipping _get_component. '
                              'Name can not start with . or _: %s', full_path)
    else:
        sub_cmp_list.extend(_get_discovered_comps(search_dir,
                                                  cmp_types_list))
    return sub_cmp_list