anchor.diff:  //   Shell.
   abstract class Application {
     _ApplicationImpl _applicationImpl;
  -  List<service_provider.ServiceProviderProxy> _proxies;
  +  List<ApplicationConnection> _applicationConnections;
     List<ServiceProvider> _serviceProviders;
   
     Application(core.MojoMessagePipeEndpoint endpoint) {
  -    _proxies = [];
  +    _applicationConnections = [];
       _serviceProviders = [];
       _applicationImpl = new _ApplicationImpl(this, endpoint);
     }
   
     Application.fromHandle(core.MojoHandle appHandle) {
  -    _proxies = [];
  +    _applicationConnections = [];
       _serviceProviders = [];
       _applicationImpl = new _ApplicationImpl.fromHandle(this, appHandle);
     }
   
     void initialize(List<String> args) {}
   
  +  // Establishes a connection to the app at |url|.
  +  ApplicationConnection connectToApplication(String url) {
  +    var serviceProviderProxy =
  +        new service_provider.ServiceProviderProxy.unbound();
  +    // TODO: Need to expose ServiceProvider for local services.
  +    _applicationImpl.shell.connectToApplication(
  +        url, serviceProviderProxy, null);
  +    var applicationConnection = new ApplicationConnection(serviceProviderProxy);
  +    _applicationConnections.add(applicationConnection);
  +    return applicationConnection;
  +  }
  +
     void connectToService(String url, bindings.Proxy proxy) {
  -    assert(!proxy.isBound);
  -    var endpoint = _connectToServiceHelper(url, proxy.name);
  -    proxy.bind(endpoint);
  +    connectToApplication(url).connectToService(proxy);
     }
   
     void requestQuit() {}
  
positive.code:   void close({bool nodefer: false}) => shell.close();
  }
  
  // TODO(zra): Better documentation and examples.
  // To implement, do the following:
  // - Optionally override acceptConnection() if services are to be provided.
  
negative.code: 
    void close() {
      assert(_applicationImpl != null);
      _applicationConnections.forEach((c) => c.serviceProvider.close());
      _applicationConnections.clear();
      _serviceProviders.forEach((sp) => sp.close());
      _serviceProviders.clear();
      _applicationImpl.close();
  