@Override
  public PyType getType(@NotNull TypeEvalContext context, @NotNull TypeEvalContext.Key key) {
    for (PyTypeProvider provider : PyTypeProvider.EP_NAME.getExtensionList()) {
      final PyType type = provider.getCallableType(this, context);
      if (type != null) {
        return type;
      }
    }
    return PyFunctionTypeImpl.create(this, context);
  }
@Override
  public PyType getType(@NotNull TypeEvalContext context, @NotNull TypeEvalContext.Key key)