code: @Override
      public R visitExecutable(ExecutableElement e, P p) {
          ElementKind k = e.getKind();
          switch(k) {
          case CONSTRUCTOR:
              return visitExecutableAsConstructor(e, p);
  
          case INSTANCE_INIT:
              return visitExecutableAsInstanceInit(e, p);
  
          case METHOD:
              return visitExecutableAsMethod(e, p);
  
          case STATIC_INIT:
              return visitExecutableAsStaticInit(e, p);
  
          default:
              throw new AssertionError("Bad kind " + k + " for ExecutableElement" + e);
          }
      }
docs: Visits an executable element, dispatching to the visit method
  for the specific {@linkplain ElementKind kind} of executable,
  {@code CONSTRUCTOR}, {@code INSTANCE_INIT}, {@code METHOD}, or
  {@code STATIC_INIT}.
  
  @param e {@inheritDoc}
  @param p {@inheritDoc}
  @return  the result of the kind-specific visit method