com.oracle.truffle.api.dsl

## Annotation Type Specialization

    @Retention(value=RUNTIME)
    @Target(value=METHOD)
    public @interface Specialization

### Optional Element Summary

Optional Elements
`java.lang.String[]` `assumptions` Defines the assumptions to check for this specialization.
`java.lang.String[]` `contains` The contains attribute declares all specializations that are contained by this specialization.
`java.lang.String[]` `guards`
`java.lang.String` `insertBefore` Inserts this and all specializations that are declared after this specialization before a specialization in the superclass.
`int` `order` Deprecated. use declaration order instead. Will get removed in the next release.
`java.lang.Class<? extends java.lang.Throwable>[]` `rewriteOn`

### Element Detail

#### order

    @Deprecated
    public abstract int order

Deprecated. use declaration order instead. Will get removed in the next release.
The order has no effect anymore. The declaration order specialization methods is used instead.

Default:
  -1

#### insertBefore

    public abstract java.lang.String insertBefore

Inserts this and all specializations that are declared after this specialization before a specialization in the superclass. By default all specializations of the subclass are appended to the specializations of the superclass.

Default:
  ""

#### rewriteOn

    public abstract java.lang.Class<? extends java.lang.Throwable>[] rewriteOn

Default:
  {}

#### contains

    public abstract java.lang.String[] contains

The contains attribute declares all specializations that are contained by this specialization. A containing specialization must be strictly generic as the contained specialization.

Default:
  {}

#### guards

    public abstract java.lang.String[] guards

Default:
  {}

#### assumptions

    public abstract java.lang.String[] assumptions

Defines the assumptions to check for this specialization. When the specialization method is invoked it is guaranteed that these assumptions still hold. It is not guaranteed that they are checked before the `guards()` methods. They may be checked before after or in between `guards()`. To declare assumptions use the `NodeAssumptions` annotation at class level.

Default:
  {}