@Override
    public void visit(ClassOrInterfaceDeclaration declaration, A ctx) {
      List<TypeParameter> typeParams = declaration.getTypeParameters();
      SymbolType thisType = symbol.getType();

      load(table, typeParams, thisType);

      if (!declaration.isInterface()) {
        List<ClassOrInterfaceType> extendsList = declaration.getExtends();
        if (extendsList != null && !extendsList.isEmpty()) {
          processSuperGenerics(table, symbol, extendsList.get(0));
        }
      }
    }
 /*
  * (non-Javadoc)
  *
  * @see
  * org.walkmod.javalang.visitors.VoidVisitorAdapter#visit(org.walkmod.javalang.ast.body.ClassOrInterfaceDeclaration,
  * java.lang.Object)
  */
 @Override
 public void visit(ClassOrInterfaceDeclaration n, VisitorContext arg) {
   classStack.push(n.getName());
   variablesMap.put(classStack.peek(), new HashMap<String, Object>());
   super.visit(n, arg);
   variablesMap.remove(classStack.pop());
 }