code: @Override
      public Object proceed() throws Exception {
          Object returnValue = null;
          try {
              if (ivNextIndex < ivNumberOfInterceptors) {
                  // There is atleast 1 more interceptor method in the
                  // chain to invoke. Determine if method signature is
                  // one that is passed the InvocationContext.
                  InterceptorProxy w = ivInterceptorProxies[ivNextIndex];
                  if (w.ivRequiresInvocationContext) {
                      // Method signature is <METHOD>(InvocationContext).
                      // Therefore, only call this method it will call
                      // InvocationContext.proceed() to continue with
                      // the next method in the chain.
                      ++ivNextIndex;
                      returnValue = w.invokeInterceptor(ivBean, this, ivInterceptors);
                  } else {
                      // Method signature is <METHOD>(), which means it must be
                      // a lifecycle callback method of the bean class or
                      // one of its superclasses.  As required by EJB 3 spec,
                      // call all remaining lifecycle methods in the chain.
                      while (w != null) {
                          ++ivNextIndex;
                          returnValue = w.invokeInterceptor(ivBean, this, ivInterceptors);
                          w = (ivNextIndex < ivNumberOfInterceptors) ? ivInterceptorProxies[ivNextIndex] : null;
                      }
                  }
              } else if (ivMethod != null) {
                  // The last around invoke in the chain has called proceed,
                  // so now we must invoke the business method.
                  returnValue = ivContainer.invokeProceed(ivEJSDeployedSupport, ivMethod, ivBean, ivParameters, ivParametersModified); //LIDB3294-41
              } else if (ivIsAroundConstruct) {
                  try {
                      ivBean = ivConstructCallback.proceed(ivParameters, getContextData());
                  } catch (Exception ex) {
                      ivAroundConstructException = ex;
                      throw ex;
                  }
                  return null;
              }
  
          } catch (UndeclaredThrowableException ude) {
              throwUndeclaredExceptionCause(ude);
          } catch (InvocationTargetException ite) {
              throwUndeclaredExceptionCause(ite);
          }
  
          // Per the interceptor 1.2 spec, "If a lifecycle callback interceptor
          // method returns a value, it is ignored by the container."
          return ivMethod == null ? null : returnValue;
      }
docs: d454160 - try/catch InvocationTargetException and unwrapper.