A function model represents the model of a Ceylon function that you can invoke and inspect.

A function is a toplevel binding, declared on a package.

This is a `FunctionModel` that you can also invoke:

    shared String foo(String name) => "Hello "+name;

    void test(){
        Function<String,[String]> f = `foo`;
        // This will print: Hello Stef
        print(f("Stef"));
    }

no type hierarchy

- `Function`
  - `Applicable`
    - `Callable`
  - `FunctionModel`
    - `Functional`
    - `Generic`
    - `Model`
      - `Declared`

no subtypes hierarchy

Attributes
`declaration` | Source Code `shared formal FunctionDeclaration declaration` This function's declaration. Refines `FunctionModel.declaration` ultimately refines `Declared.declaration`

Inherited Attributes
Attributes inherited from: `Object` `hash`, `string`
Attributes inherited from: `Declared` `container`, `declaration`
Attributes inherited from: `FunctionModel<Type,Arguments>` `declaration`, `type`
Attributes inherited from: `Functional` `parameterTypes`
Attributes inherited from: `Generic` `typeArgumentList`, `typeArgumentWithVarianceList`, `typeArgumentWithVariances`, `typeArguments`
Attributes inherited from: `Model` `container`, `declaration`

Inherited Methods
Methods inherited from: `Object` `equals()`
Methods inherited from: `Applicable<Type,Arguments>` `apply()`, `namedApply()`