DelegateValue createFunctionOverride( AstNode node, String syntax_id, FunctionOverrideBlock block, String root_prefix, Set<String> owner_externals) throws Exception { generateId(node); String name = root_prefix + "$Override" + id_gen.get(node) + syntax_id; if (functions.containsKey(name)) { return functions.get(name); } FunctionGenerator generator = createFunctionGenerator(node, name, true, root_prefix, owner_externals); block.invoke( generator, generator.getInitialContainerFrame(), generator.getInitialContext(), generator.getInitialOriginal(), generator.getInitialSelfFrame(), generator.getInitialSourceReference()); generator.generateSwitchBlock(false); DelegateValue initialiser = generator.getInitialiser(); functions.put(name, initialiser); return initialiser; }