---
schema_version: "1"
id: 6872c90ab78d569365e40deede9d62118a51169d288f713d054a53086bcbe39e
title: Core Annotations (dw::Core)
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/dataweave/2.3/dw-core-annotations.md
canonical_url: https://docs.mulesoft.com/dataweave/2.3/dw-core-annotations
source_site: docs.mulesoft.com
content_type: documentation
content_hash: f36d4c61cc260b213c08f6fcce62e91520c68fc6eb8603f0a6c99b4ddc30edee
description: MuleSoft Documentation Site
release: "2.3"
latest: false
---
---
product: DataWeave
version: 2.3
---

# Core Annotations (dw::Core)

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

<table><colgroup><col> <col> <col></colgroup><thead><tr><th>Annotation</th><th>Definition</th><th>Description</th></tr></thead><tbody><tr><td><p>AnnotationTarget</p></td><td><p><code>@AnnotationTarget(targets: Array&lt;String&gt;)</code></p></td><td><div><div><p>Defines where the Annotation can be used. If not defined, it can be used in any possible target.</p></div><div><p>Options are:</p></div><div><ul><li><p>Parameter: For function parameters.</p></li><li><p>Function: For function definitions.</p></li><li><p>Variable: For variable definitions.</p></li><li><p>Import: For import definitions.</p></li></ul></div></div></td></tr><tr><td><p>DesignOnlyType</p></td><td><p><code>@DesignOnlyType()</code></p></td><td><div><div><p>Annotation that marks a parameter type as Design Only. This means that this field type is only validated at design time. At runtime, only minimal type validation takes place. This is useful for performance reasons, especially with complex Object types.</p></div></div></td></tr><tr><td><p>Lazy</p></td><td><p><code>@Lazy()</code></p></td><td><div><div><p>Annotation that marks a Variable declaration to be Lazily initialized.</p></div><div><p><em>Introduced in DataWeave 2.3.0. Supported by Mule 4.3 and later.</em></p></div></div></td></tr><tr><td><p>RuntimePermissions</p></td><td><p><code>@RuntimePermissions(permissions: Array&lt;String&gt;)</code></p></td><td><div><div><p>Annotation to specify that a function needs a given set of Runtime Permissions to be executed</p></div></div></td></tr><tr><td><p>Since</p></td><td><p><code>@Since(version: String)</code></p></td><td><div><div><p>Annotation used to define the version from which this functionality is available.</p></div><div><p><em>Introduced in DataWeave 2.3.0. Supported by Mule 4.3 and later.</em></p></div></div></td></tr><tr><td><p>StreamCapable</p></td><td><p><code>@StreamCapable()</code></p></td><td><div><div><p>Annotation that marks a parameter as Stream capable. This means that this field is going to consume the Array of Object in a forward only manner.</p></div></div></td></tr><tr><td><p>TailRec</p></td><td><p><code>@TailRec()</code></p></td><td><div><div><p>Annotation that marks a function to be Tail Recursive. If the function is not tail recursive, it will start failing.</p></div></div></td></tr></tbody></table>
