@Override
  public void visitTypeParameter(@NotNull PsiTypeParameter parameter) {
    final PsiTypeParameter other = (PsiTypeParameter)myMatchingVisitor.getElement();
    final PsiIdentifier identifier = parameter.getNameIdentifier();
    assert identifier != null;
    final PsiIdentifier identifier2 = other.getNameIdentifier();

    final MatchingHandler handler = myMatchingVisitor.getMatchContext().getPattern().getHandler(identifier);
    if (handler instanceof SubstitutionHandler) {
      if (!myMatchingVisitor.setResult(((SubstitutionHandler)handler).handle(identifier2, myMatchingVisitor.getMatchContext()))) return;
    }
    else if (!myMatchingVisitor.setResult(myMatchingVisitor.matchText(identifier, identifier2))) return;

    if (!myMatchingVisitor.setResult(matchInAnyOrder(parameter.getExtendsList(), other.getExtendsList()))) return;
    myMatchingVisitor.setResult(myMatchingVisitor.matchInAnyOrder(parameter.getAnnotations(), other.getAnnotations()));
  }
@Override
  public void visitTypeParameter(@NotNull PsiTypeParameter parameter)