code: def __collect_config_items(self, classes: List[Type["Configs"]]):
      for c in classes:
          for k, v in c.__dict__.items():
              if (
                  PropertyKeys.evaluators in c.__dict__
                  and k in c.__dict__[PropertyKeys.evaluators]
              ):
                  continue
              if not _is_valid(k):
                  continue
  
              if v.has_value:
                  self.__defaults[k] = v.value
  
              if k in self.__config_items:
                  self.__config_items[k].update(v)
              else:
                  self.__config_items[k] = v
  
              if k not in self.__types:
                  self.__types[k] = v.annotation
  
imports: import types
  import warnings
  from collections import OrderedDict
  from typing import Dict, List, Callable, Union, Tuple, Optional, Type, Set, Iterable, Any
  from .config_function import ConfigFunction
  from .config_item import ConfigItem
  from .eval_function import EvalFunction
  from .utils import Value
  from ...None import monit
label_desc: Use image node_id 2 for calling the Configs obj's underlying member method code with example usage: obj.__collect_config_items(classes) without return types