class FunctionType implements Type {

    @Override
    public String getDisplayName()
    {
        ImmutableList<String> names = getTypeParameters().stream()
                .map(Type::getDisplayName)
                .collect(toImmutableList());
        return "function(" + Joiner.on(",").join(names) + ")";
    }

    public  FunctionType(List<Type> argumentTypes, Type returnType);

}