1. A system, comprising: a processor; and a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions which when executed cause the processor to: receive a local scope definition associated with a first node in a hierarchical application tree; determine, for a set of one or more evaluated scopes, a qualified hierarchical application tree which is a pruned version of the hierarchical application tree, including by: pruning any nodes from the hierarchical application tree that are not relevant to the set of one or more evaluated scopes in order to obtain the qualified hierarchical application tree which is a pruned version of the hierarchical application tree; propagating the local scope definition to a second node which is a child of the first node; encountering a third node in the qualified hierarchical application tree, wherein: (1) the set of evaluated scopes includes a first scope type at a first value and (2) the third node is associated with a new scope type at a second value; determining if the third node is associated with the first scope type at the first value; in the event it is determined that the third node is associated with the first scope type at the first value: creating a cloned hierarchical application tree for a second set of evaluated scopes which includes the first scope type at the first value and the new scope type at the second value; including the third node in the cloned hierarchical application tree; and excluding the third node from the qualified hierarchical application tree; and in the event it is determined that the third node is not associated with the first scope type at the first value, excluding the third node from the qualified hierarchical application tree; and generate a qualified application, including by evaluating application instructions included in the qualified hierarchical application tree using the set of evaluated scopes.