anchor.diff:  testUnparseMember(String member) {
     Node node = parseMember(member);
     Expect.equals(member, node.unparse());
  +}
  +
  +final coreLib = @'''
  +#library('corelib');
  +interface Object {}
  +interface bool {}
  +interface num {}
  +interface int extends num {}
  +interface double extends num {}
  +interface String {}
  +interface Function {}
  +interface List {}
  +interface Closure {}
  +interface Dynamic {}
  +interface Null {}
  +''';
  +
  +testDart2Dart(String src, void continuation(String s)) {
  +  fileUri(path) => new Uri(scheme: 'file', path: path);
  +
  +  final scriptUri = fileUri('script.dart');
  +
  +  provider(uri) {
  +    if (uri == scriptUri) return new Future.immediate(src);
  +    if (uri.path.endsWith('/core.dart')) return new Future.immediate(coreLib);
  +    return new Future.immediate('');
  +  }
  +
  +  handler(uri, begin, end, message, kind) {
  +    if (kind === Diagnostic.ERROR || kind === Diagnostic.CRASH) {
  +      Expect.fail('$uri: $begin-$end: $message [$kind]');
  +    }
  +  }
  +
  +  compile(
  +      scriptUri,
  +      fileUri('libraryRoot'),
  +      fileUri('packageRoot'),
  +      provider,
  +      handler,
  +      const ['--output-type=dart', '--unparse-validation']).then(continuation);
   }
   
   testGenericTypes() {
  
positive.code:   testClosure();
    testIndexedOperatorDecl();
    testNativeMethods();
  }
  
negative.code:   testUnparseMember('foo()native "this.x = 41";');
  }
  
  testSimpleFileUnparse() {
    testDart2Dart('main() {}', (String s) {
    });
  }
  
  main() {
    testGenericTypes();
    testForLoop();
  