anchor.diff:  void main(List<String> arguments) {
     bool verbose = false;
     bool printJs = false;
  +  bool writeJs = false;
     List<int> indices;
     for (String arg in arguments) {
       if (arg == '-v') {
         verbose = true;
       } else if (arg == '--print-js') {
         printJs = true;
  +    } else if (arg == '--write-js') {
  +      writeJs = true;
       } else {
         int index = int.parse(arg, onError: (_) => null);
         if (index != null) {
  
positive.code:   asyncTest(() async {
      for (int index in indices) {
        await runTest(index, processTestCode(TESTS[index]),
            printJs: printJs, verbose: verbose);
      }
    });
  }
  
  Future runTest(int index, Test test,
      {bool printJs: false, bool verbose: false}) async {
    Directory tmpDir = await createTempDir();
    String input = '${tmpDir.path}/$INPUT_FILE_NAME';
    new File(input).writeAsStringSync(test.code);
  
negative.code: ''',
    '''
  import 'package:expect/expect.dart';
  class MyType {
    get length => 3; // ensures we build an interceptor for `.length`
  }
  
  main() {
    confuse('').trim(); // includes some code above the interceptors
    confuse([]).length;
    confuse(new MyType()).length;
    // TODO(johnniwinther): Intercepted access should point to 'length':
    @{1:main}confuse(null).length; // called through the interceptor
  }
  
  @NoInline()
  confuse(x) => x;''',
    '''
  import 'package:expect/expect.dart';
  main() {
    // This call is no longer on the stack when the error is thrown.
    @{:main}test();
  