code: def get_property(obj, name):
          
          if obj == None or name == None:
              return None
  
          names = name.split(".")
          if names == None or len(names) == 0:
              return None
  
          return RecursiveObjectReader._perform_get_property(obj, names, 0)
docs: Recursively gets value of object or its subobjects property specified by its name.
  
          The object can be a user defined object, map or array.
          The property name correspondently must be object property, map key or array index.
  
          :param obj: an object to read property from.
  
          :param name: a name of the property to get.
  
          :return: the property value or null if property doesn't exist or introspection failed.