import "conditional_import.dart"
    if (dart.library.io) "dart:io"
    if (dart.library.html) "dart:html" as a;
import "conditional_import.dart" if (dart.library.foo) "dart:foo" as b;

class HttpRequest {}

testA(a.HttpRequest request) {}
testB(b.HttpRequest request) {}
void main() {}
expect(expected, actual) {}
