import ceylon.language.meta.declaration {
FunctionalDeclaration,
NestableDeclaration
}
import ceylon.language.meta.model {
ClosedType = Type
}
"""A function model represents the model of a Ceylon function that you can inspect.
A function model can be either a toplevel [[Function]], a
[[CallableConstructor|callable constructor]] of a toplevel Class,
a member [[Method]] or [[CallableMemberConstructor|callable constructor]]
of a member class.
"""
shared sealed interface FunctionModel<out Type=Anything, in Arguments=Nothing>
satisfies Model & Generic & Functional
given Arguments satisfies Anything[] {
"This function's declaration."
shared formal actual NestableDeclaration&FunctionalDeclaration declaration;
"This function's return closed type."
shared formal ClosedType<Type> type;
}