@Override
  public @NotNull PsiClassType createType(@NotNull PsiClass aClass, PsiType parameter) {
    PsiTypeParameter[] typeParameters = aClass.getTypeParameters();
    assert typeParameters.length == 1 : aClass;

    return createType(aClass, PsiSubstitutor.EMPTY.put(typeParameters[0], parameter));
  }
@Override
  public @NotNull PsiClassType createType(@NotNull PsiClass aClass, PsiType parameter)