## Uses of Interface
jdk.dynalink.Operation

- Packages that use Operation
  Package | Description
  --- | ---
  jdk.dynalink | Contains interfaces and classes that are used to link an `invokedynamic` call site.

- - ### Uses of Operation in jdk.dynalink

    Classes in jdk.dynalink that implement Operation
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `NamedOperation` | Operation that associates a name with another operation.
    `class` | `NamespaceOperation` | Describes an operation that operates on at least one `Namespace` of an object.
    `class` | `StandardOperation` | Defines the standard dynamic operations.

    Methods in jdk.dynalink that return Operation
    Modifier and Type | Method | Description
    --- | --- | ---
    `Operation` | NamedOperation.`getBaseOperation()` | Returns the base operation of this named operation.
    `static Operation` | NamedOperation.`getBaseOperation​(Operation op)` | If the passed operation is a named operation, returns its `NamedOperation.getBaseOperation()`, otherwise returns the operation as is.
    `Operation` | NamespaceOperation.`getBaseOperation()` | Returns the base operation of this named operation.
    `static Operation` | NamespaceOperation.`getBaseOperation​(Operation op)` | If the passed operation is a namespace operation, returns its `NamespaceOperation.getBaseOperation()`, otherwise returns the operation as is.
    `Operation` | CallSiteDescriptor.`getOperation()` | Returns the operation at the call site.

    Methods in jdk.dynalink with parameters of type Operation
    Modifier and Type | Method | Description
    --- | --- | ---
    `CallSiteDescriptor` | CallSiteDescriptor.`changeOperation​(Operation newOperation)` | Finds or creates a call site descriptor that only differs in its operation from this descriptor.
    `protected CallSiteDescriptor` | CallSiteDescriptor.`changeOperationInternal​(Operation newOperation)` | Finds or creates a call site descriptor that only differs in its operation from this descriptor.
    `static boolean` | NamespaceOperation.`contains​(Operation op, Operation baseOperation, Namespace namespace)` | Returns true if the specified operation is a `NamespaceOperation` and its base operation is equal to the specified operation, and it contains the specified namespace.
    `static StandardNamespace` | StandardNamespace.`findFirst​(Operation op)` | If the passed in operation is a `NamespaceOperation`, or a `NamedOperation` wrapping a `NamespaceOperation`, then it returns the first (if any) `StandardNamespace` in its namespace list.
    `static Operation` | NamedOperation.`getBaseOperation​(Operation op)` | If the passed operation is a named operation, returns its `NamedOperation.getBaseOperation()`, otherwise returns the operation as is.
    `static Operation` | NamespaceOperation.`getBaseOperation​(Operation op)` | If the passed operation is a namespace operation, returns its `NamespaceOperation.getBaseOperation()`, otherwise returns the operation as is.
    `static Object` | NamedOperation.`getName​(Operation op)` | If the passed operation is a named operation, returns its `NamedOperation.getName()`, otherwise returns null.
    `static Namespace[]` | NamespaceOperation.`getNamespaces​(Operation op)` | If the passed operation is a namespace operation, returns its `NamespaceOperation.getNamespaces()`, otherwise returns an empty array.

    Constructors in jdk.dynalink with parameters of type Operation
    Constructor | Description
    --- | ---
    `CallSiteDescriptor​(MethodHandles.Lookup lookup, Operation operation, MethodType methodType)` | Creates a new call site descriptor.
    `NamedOperation​(Operation baseOperation, Object name)` | Creates a new named operation.
    `NamespaceOperation​(Operation baseOperation, Namespace... namespaces)` | Constructs a new namespace operation.