def __getitem__(self, key):

    fields = key.split('.')
    if len(fields) > 1 and self.__data__.has_key(fields[0]):
      assert isinstance(self.__data__[fields[0]], Properties)
      return self.__data__[fields[0]].__getitem__('.'.join(fields[1:]))

    if not self.__data__.has_key(key):
      return None

    node = self
    result = self.__data__[key]

    # deal with the variables from local collection then go up the parent collection.
    while node:
      result = node.sub(result)
      node = node.__parent__
    return result
get_algorithm_ports(cls: class) -> None
dataset/ETHPy150Open bloomreach/briefly/src/briefly/properties.py/Properties.__getitem__--crossover with--dataset/ETHPy150Open VisTrails/VisTrails/vistrails/packages/vtk/vtk_wrapper/parse.py/get_algorithm_ports