@Override
    public void visitReferenceExpression(@NotNull GrReferenceExpression expression) {
      super.visitReferenceExpression(expression);
      if (expression.getCopyableUserData(SUPER_REF) != null) {
        expression.putCopyableUserData(SUPER_REF, null);
        final GrExpression qualifier = expression.getQualifier();
        if (qualifier instanceof GrReferenceExpression && ((GrReferenceExpression)qualifier).isReferenceTo(mySourceClass)) {
          try {
            GroovyPsiElementFactory factory = GroovyPsiElementFactory.getInstance(myProject);
            GrExpression newExpr = factory.createExpressionFromText(myTargetSuperClass.getName() + ".this", null);
            expression.replace(newExpr);
          }
          catch (IncorrectOperationException e) {
            LOG.error(e);
          }
        }
      }
      else if (expression.getCopyableUserData(THIS_REF) != null) {
        expression.putCopyableUserData(THIS_REF, null);
        final GrExpression qualifier = expression.getQualifier();
        if (qualifier instanceof GrReferenceExpression && ((GrReferenceExpression)qualifier).isReferenceTo(mySourceClass)) {
          try {
            ((GrReferenceExpression)qualifier).bindToElement(myTargetSuperClass);
            GroovyChangeContextUtil.clearContextInfo(qualifier);
          }
          catch (IncorrectOperationException e) {
            LOG.error(e);
          }
        }
      }
    }
@Override
    public void visitReferenceExpression(@NotNull GrReferenceExpression expression)