String prefix) {
CompiledScript script = null;
if (expression != null) try {
// normalize "unvarying" references - that is,
// references marked with braces like [{this}]
PValue expr = (PValue) expression.clone();
expr.apply(new NormalizeReferences(data, prefix));
// compile the expression into a script.
script = Compiler.compile(expr);
script = Compiler.exprAndDefined(script, tag);
} catch (CompilationException ce) {