>>> (indent 4)
    var initializers = something == null
        ? {}
        : new Map.fromIterable(
            something.field.where((i) => i is SomeClassGoesHere),
            key: (i) => i.someField.name);
<<<
    var initializers = something == null
        ? {}
        : new Map.fromIterable(
            something.field.where((i) => i is SomeClassGoesHere),
            key: (i) => i.someField.name);
>>> (indent 4)
    var cg = outputDart ? new DartGenerator(
            outputDir, uri, results.libraries, results.rules, formatOutput) :
        new JSGenerator(outputDir, uri, results.libraries, results.rules);
<<<
    var cg = outputDart
        ? new DartGenerator(
            outputDir, uri, results.libraries, results.rules, formatOutput)
        : new JSGenerator(outputDir, uri, results.libraries, results.rules);