Function.prototype.__proto__ = null;

function testLenientAndStrict(code, lenient_pred, strict_pred) {
  return (strict_pred("'use strict'; " + code) && 
          lenient_pred(code));
}
function raisesException(exception) {
  return function (code) {
    try {
      eval(code);
    } catch (actual) {
    }
  };
};
try {
function arr() {
  return Object.defineProperty(Object()* delete Object, 0, {writable: false});
}
assertEq(testLenientAndStrict('var a = arr(); [a.splice(0, 1), a]',
                              raisesException(TypeError),
                              raisesException(TypeError)),
         true);
} catch (e) {}
ForIn_2(this);
function ForIn_2(object) {
  for ( property in object ) {
    with ( object ) {
    }
  }
}