>>> (indent 6)
      builder.serve("foo", "1.2.3",
          deps: {'barback': 'any'},
          pubspec: {'transformers': ['foo']},
          contents: [
        d.dir("lib", [
          d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")),
          d.file("foo.dart", "final message = 'Hello!';")
        ])
      ]);
<<<
      builder.serve("foo", "1.2.3", deps: {
        'barback': 'any'
      }, pubspec: {
        'transformers': ['foo']
      }, contents: [
        d.dir("lib", [
          d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")),
          d.file("foo.dart", "final message = 'Hello!';")
        ])
      ]);
>>> (indent 4) was slow
    d.dir(appPath, [
      d.dir('build', [
        d.dir('example', [
          d.file("index.html", "html"),
          d.dir('packages', [
            d.dir('foo', [
              d.file('foo.txt', 'foo'),
              d.dir('sub', [
                d.file('bar.txt', 'bar'),
              ]),
            ])
          ])
        ]),
        d.dir('web', [
          d.file("index.html", "html"),
          d.dir('packages', [
            d.dir('foo', [
              d.file('foo.txt', 'foo'),
              d.dir('sub', [
                d.file('bar.txt', 'bar'),
              ]),
            ])
          ]),
          d.dir("sub", [
            d.file("index.html", "html"),
            // "packages" should *only* be created in the top-level directory.
            d.nothing("packages")
          ])
        ])
      ])
    ]).validate();
<<<
    d.dir(appPath, [
      d.dir('build', [
        d.dir('example', [
          d.file("index.html", "html"),
          d.dir('packages', [
            d.dir('foo', [
              d.file('foo.txt', 'foo'),
              d.dir('sub', [d.file('bar.txt', 'bar'),]),
            ])
          ])
        ]),
        d.dir('web', [
          d.file("index.html", "html"),
          d.dir('packages', [
            d.dir('foo', [
              d.file('foo.txt', 'foo'),
              d.dir('sub', [d.file('bar.txt', 'bar'),]),
            ])
          ]),
          d.dir("sub", [
            d.file("index.html", "html"),
            // "packages" should *only* be created in the top-level directory.
            d.nothing("packages")
          ])
        ])
      ])
    ]).validate();