public void cleanupLocalContext() {
if (localContexts.empty()) {
throw new IllegalStateException("Local contexts stack is empty");
}
ArrayStack removeEntries = (ArrayStack)localContexts.pop();
while (!removeEntries.isEmpty()) {
if (removeEntries.peek() instanceof PathValue) {
PathValue entry = (PathValue)removeEntries.pop();
removeAt(entry.getPath(), entry.getValue());
} else {
KeyValue entry = (KeyValue)removeEntries.pop();
Object key = entry.getKey();
Object value = entry.getValue();
multiValueMap.remove(key, value);
if (multiValueMap.containsKey(key)) {