|  | // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | part of dart.isolate; | 
|  |  | 
|  | /** | 
|  | * An unforgeable object that comes back as equal when passed through other | 
|  | * isolates. | 
|  | * | 
|  | * Sending a capability object to another isolate, and getting it back, | 
|  | * will produce an object that is equal to the original. | 
|  | * There is no other way to create objects equal to a capability object. | 
|  | * | 
|  | * Capabilities can be used as access guards: A remote isolate can send | 
|  | * a request for an operation, but it is only allowed if the request contains | 
|  | * the correct capability object. | 
|  | * | 
|  | * This allows exposing the same interface to multiple clients, | 
|  | * but restricting some operations to only those clients | 
|  | * that have also been given the corresponding capability. | 
|  | * | 
|  | * Capabilities can be used inside a single isolate, | 
|  | * but they have no advantage over | 
|  | * just using `new Object` to create a unique object, | 
|  | * and it offers no real security against other code | 
|  | * running in the same isolate. | 
|  | */ | 
|  | class Capability { | 
|  | /** | 
|  | * Create a new unforgeable capability object. | 
|  | */ | 
|  | external factory Capability(); | 
|  | } |