code: protected void postInvoke(Method m, Object [] args, Object retval, Throwable t, String [] interceptorNames, String pivotedInterceptor)
      {
          try
          {
              Vector<InvokeListener> invokeListeners = getInvokeListeners();
              if (invokeListeners.size() > 0)
              {
                  for (InvokeListener listener : invokeListeners)
                      listener.postInvoke(retval, t);
              }
  
              //
              // Process interceptors
              //
              if ( interceptorNames != null )
              {
                  for (int cnt = interceptorNames.length-1; cnt >= 0; cnt-- )
                  {
                      String n  = interceptorNames[cnt];
                      if (pivotedInterceptor == null || n.equals(pivotedInterceptor))
                      {
                          pivotedInterceptor = null;
                          Interceptor i = ensureInterceptor( n );
                          i.postInvoke( this, m, args, retval, t );
                      }
                  }
              }
          }
          finally
          {
              //
              // Release any lock obtained above in preInvoke
              //
              if (_invokeLock != null)
                  _invokeLock.release();
          }
      }
docs: The postInvoke method is called after all operations on the control.  In addition to
  providing the basic hook for logging, context initialization, resource management, and other common
  services, it also provides a hook for interceptors.  During preInvoke, interceptors will be
  called in the order that they are in the list.  During postInvoke, they will be called in the
  reverse order.  Here is an example of the call sequence with I1, I2, and I3 being interceptors in the list:
  
  I1.preInvoke() -> I2.preInvoke() -> I3.preInvoke() -> invoke method
  |
  I1.postInvoke() <- I2.postInvoke() <- I3.postInvoke() <---
  
  In the event that an interceptor in the list pivoted during preInvoke, the "pivotedInterceptor"
  parameter indicates the interceptor that had pivoted, and the interceptors succeeding it in the list will
  not be called during postInvoke.