# Annotation Type Concrete

@Retention(CLASS) @Target(TYPE) public @interface Concrete

Indicates that a class has a known concrete implementation that ParparVM can target directly in native (C/Objective-C) pipelines.

When present, the translator may bypass virtual lookup when invoking methods on this type by preferring the concrete class provided in `name()`, and falling back to the annotated type implementation if the concrete class doesn't implement the method.

- ## Required Element Summary

  Required Elements
  Modifier and Type
  Required Element
  Description
  `String`
  `name`
  The fully-qualified class name of the concrete implementation to prefer during ParparVM native translation (the iOS pipeline, historically the only native target).

- ## Optional Element Summary

  Optional Elements
  Modifier and Type
  Optional Element
  Description
  `String`
  `linux`
  The fully-qualified class name of the concrete implementation to prefer when translating for the native Linux (GTK/Cairo) port.
  `String`
  `mac`
  The fully-qualified class name of the concrete implementation to prefer when translating for the native macOS (AppKit) port.
  `String`
  `win`
  The fully-qualified class name of the concrete implementation to prefer when translating for the native Windows port.

- ## Element Details

  - ### name

    String name
    The fully-qualified class name of the concrete implementation to prefer during ParparVM native translation (the iOS pipeline, historically the only native target).

  - ### win

    String win
    The fully-qualified class name of the concrete implementation to prefer when translating for the native Windows port. When empty (the default), the native Windows build falls back to the annotated (portable) base class rather than the iOS `name()` target -- so a type that has no Windows specialization (e.g. a SIMD helper) translates to its software base instead of pulling in the absent iOS class.
    Default:
      `""`

  - ### linux

    String linux
    The fully-qualified class name of the concrete implementation to prefer when translating for the native Linux (GTK/Cairo) port. When empty (the default), the native Linux build falls back to the annotated (portable) base class rather than the iOS `name()` target -- mirroring `win()` so a type with no Linux specialization translates to its software base instead of pulling in the absent iOS class.
    Default:
      `""`

  - ### mac

    String mac

    The fully-qualified class name of the concrete implementation to prefer when translating for the native macOS (AppKit) port. When empty (the default), the native macOS build falls back to the annotated (portable) base class -- mirroring `win()` and `linux()`.

    Unlike those two, the macOS port shares the Apple native binding classes with the iOS port, so a type whose iOS specialization also compiles against the macOS SDK should name that same iOS class here rather than leave this empty. Leaving it empty silently degrades to the portable base, which is a green build with the specialization missing.

    Default:
      `""`