code: private void processInterface(TypeElement typeElement) {
          List<? extends TypeMirror> intfacs = typeElement.getInterfaces();
          if (!intfacs.isEmpty()) {
              for (TypeMirror intfac : intfacs) {
                  if (!add(subInterfaces, utils.asTypeElement(intfac), typeElement)) {
                      return;
                  } else {
                      processInterface(utils.asTypeElement(intfac));   // Recurse
                  }
              }
          } else {
              // we need to add all the interfaces who do not have
              // super-interfaces to baseInterfaces set to traverse them
              if (!baseInterfaces.contains(typeElement)) {
                  baseInterfaces.add(typeElement);
              }
          }
      }
docs: For the interface passed get the interfaces which it extends, and then
  put this interface in the sub-interface set of those interfaces. Do it
  recursively. If a interface doesn't have super-interface just attach
  that interface in the set of all the baseInterfaces.
  
  @param typeElement Interface under consideration.