import ceylon.language.meta.model{
Type,
Function,
Method
}
"""Abstraction over declarations which can be invoked, namely functions, methods and constructors """
shared sealed interface FunctionDeclaration
satisfies FunctionOrValueDeclaration & FunctionalDeclaration {
shared actual formal Function<Return, Arguments> apply<Return=Anything, Arguments=Nothing>(Type<>* typeArguments)
given Arguments satisfies Anything[];
shared actual formal Method<Container, Return, Arguments> memberApply<Container=Nothing, Return=Anything, Arguments=Nothing>(Type<Object> containerType, Type<>* typeArguments)
given Arguments satisfies Anything[];
}