/** [18.2.1.2 Eval Declaration Instantiation] */
  public static void EvalDeclarationInstantiation(
      ExecutionContext cx,
      Script script,
      LexicalEnvironment varEnv,
      LexicalEnvironment lexEnv,
      boolean deletableBindings) {
    // FIXME: spec incomplete (using modified ES5.1 algorithm for now...)

    LexicalEnvironment env = varEnv;
    EnvironmentRecord envRec = env.getEnvRec();
    // boolean strict = script.isStrict();
    for (StatementListItem d : VarScopedDeclarations(script)) {
      assert d instanceof VariableStatement;
      for (String dn : BoundNames((VariableStatement) d)) {
        boolean varAlreadyDeclared = envRec.hasBinding(dn);
        if (!varAlreadyDeclared) {
          envRec.createMutableBinding(dn, deletableBindings);
          // envRec.setMutableBinding(dn, UNDEFINED, strict);
          envRec.initialiseBinding(dn, UNDEFINED);
        }
      }
    }
  }