<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def has_property(obj, name):
 """ Checks recursively if object or its subobjects has a property with specified 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 introspect. :param name: a name of the property to check. :return: true if the object has the property and false if it doesn't. """

        if obj == None or name == None:
            return False

        names = name.split(".")
        if names == None or len(names) == 0: 
            return False

        return RecursiveObjectReader._perform_has_property(obj, names, 0)