If two objects have the same name and their scopes overlap, the clash of definitions could give rise to ambiguity. Typically, a clash occurs when an inner block is opened and a local object is declared to have the same name as a non-local object which already exists. In this situation, the non-local object continues to exist through the inner block (e.g. a variable maintains its value), but becomes temporarily inaccessible. The local meaning of the identifier always takes precedence.