A value declaration.

### Usage sample for toplevel value

Getting a model requires applying type arguments to the value declaration with `apply()` in order to be able to read that value. For example, here is how you would obtain a value model that you can read from a toplevel attribute declaration:

    String foo = "Hello";

    void test(){
        // We need to apply the the foo declaration in order to get the foo value model
        Value<String> valueModel = `value foo`.apply<String>();
        // This will print: Hello
        print(valueModel.get());
    }

### Usage sample for attributes

For attributes it is a bit longer, because attributes need to be applied the containing type, so you should use `memberApply()` and start by giving the containing closed type:

    class Outer(){
        shared String foo => "Hello";
    }

    void test(){
        // Apply the containing closed type `Outer` to the attribute declaration `Outer.foo`
        Attribute<Outer,String> valueModel = `value Outer.foo`.memberApply<Outer,String>(`Outer`);
        // We now have an Attribute, which needs to be applied to a containing instance in order to become a
        // readable value:
        Value<String> boundValueModel = valueModel(Outer());
        // This will print: Hello
        print(boundValueModel.get());
    }

no type hierarchy

- `ValueDeclaration`
  - `FunctionOrValueDeclaration`
    - `NestableDeclaration`
      - `AnnotatedDeclaration`
        - `Annotated`
        - `Declaration`
      - `TypedDeclaration`
  - `GettableDeclaration`
  - `NestableDeclaration`
    - `AnnotatedDeclaration`
      - `Annotated`
      - `Declaration`
    - `TypedDeclaration`

no subtypes hierarchy

Attributes
`late` | Source Code `shared formal Boolean late` True if this declaration is annotated with late.
`objectClass` | Source Code `shared formal ClassDeclaration? objectClass` This value's anonymous class declaration if this value is an object declaration. `null` otherwise.
`objectValue` | Source Code `shared formal Boolean objectValue` True if this declaration is an `object` declaration, whose type is an anonymous class.
`setter` | Source Code `shared formal SetterDeclaration? setter` Returns the setter declaration for this variable if there is one, `null` otherwise.
`variable` | Source Code `shared formal Boolean variable` True if this declaration is annotated with variable.

Inherited Attributes
Attributes inherited from: `Object` `hash`, `string`
Attributes inherited from: `Declaration` `name`, `qualifiedName`
Attributes inherited from: `FunctionOrValueDeclaration` `defaulted`, `parameter`, `variadic`
Attributes inherited from: `NestableDeclaration` `actual`, `container`, `containingModule`, `containingPackage`, `default`, `formal`, `shared`, `toplevel`
Attributes inherited from: `TypedDeclaration` `openType`

Methods
`apply` | Source Code `shared formal Value<Get,Set> apply<Get = Anything, Set = Nothing>()` Applies this value declaration in order to obtain a value model. See this code sample for an example on how to use this. Throws `IncompatibleTypeException` If the specified `Get` or `Set` type arguments are not compatible with the actual result.
`get` | Source Code `shared actual default Anything get()` Reads the current value of this toplevel value. Refines `GettableDeclaration.get`
`memberApply` | Source Code `shared formal Attribute<Container,Get,Set> memberApply<Container = Nothing, Get = Anything, Set = Nothing>(AppliedType<Object> containerType)` Applies the given closed container type to this attribute declaration in order to obtain an attribute model. See this code sample for an example on how to use this. Throws `IncompatibleTypeException` If the specified `Container`, `Get` or `Set` type arguments are not compatible with the actual result.
`memberGet` | Source Code `shared actual default Anything memberGet(Object container)` Reads the current value of this attribute on the given container instance. Throws `IncompatibleTypeException` If the specified container is not compatible with this attribute. `StorageException` If this attribute is not stored at runtime, for example if it is neither shared nor captured. Refines `GettableDeclaration.memberGet`
`memberSet` | Source Code `shared formal void memberSet(Object container, Anything newValue)` Sets the current value of this attribute on the given container instance. Throws `IncompatibleTypeException` If the specified container or new value type is not compatible with this attribute. `StorageException` If this attribute is not stored at runtime, for example if it is neither shared nor captured.
`set` | Source Code `shared default void set(Anything newValue)` Sets the current value of this toplevel value.

Inherited Methods
Methods inherited from: `Object` `equals()`
Methods inherited from: `Annotated` `annotated()`
Methods inherited from: `AnnotatedDeclaration` `annotations()`
Methods inherited from: `GettableDeclaration` `get()`, `memberGet()`