@Override
 public void visit(final ClassOrInterfaceType n, final A arg) {
   visitComment(n.getComment(), arg);
   visitAnnotations(n, arg);
   if (n.getScope() != null) {
     n.getScope().accept(this, arg);
   }
   if (n.getTypeArguments() != null) {
     for (final Type t : n.getTypeArguments()) {
       t.accept(this, arg);
     }
   }
 }
  @Override
  public Boolean visit(final ClassOrInterfaceType n1, final Node arg) {
    final ClassOrInterfaceType n2 = (ClassOrInterfaceType) arg;

    if (!objEquals(n1.getName(), n2.getName())) {
      return Boolean.FALSE;
    }

    if (!nodeEquals(n1.getScope(), n2.getScope())) {
      return Boolean.FALSE;
    }

    if (!nodesEquals(n1.getTypeArgs(), n2.getTypeArgs())) {
      return Boolean.FALSE;
    }
    if (!nodesEquals(n1.getAnnotations(), n2.getAnnotations())) {
      return Boolean.FALSE;
    }
    return Boolean.TRUE;
  }