Service[] services = container.getStartupSequence();
getLogger().debug( "startup sequence for " + component );  Component[] services = container.getStartupSequence();
    private synchronized void initializeComponent( ComponentHandler component ) throws Exception    {        if( component.isInitialized() )        {            return;        }        getLogger().debug( "initialization of " + component.getLocalURI() );        Component[] providers = component.getProviders();        for( int i=0; i<providers.length; i++ )        {            Component provider = providers[i];            if( provider instanceof Available )            {                Available available = (Available) provider;                try                {                    getLogger().debug( "preparing service" + provider.getURI() );                    available.prepare();                }                catch( AvailabilityException e )                {                    URI uri = getURI();                    final String error =                       "Failed to initialize component due to non-availability of a dependent service."                      + "\nComponent: " + component.getLocalURI()                      + "\nService Provider: " + provider.getURI();                    throw new ControlException( uri, error, e );                }            }        }        /*        if( component instanceof Container )        {            Container container = (Container) component;            Service[] services = container.getStartupSequence();            for( int i=0; i<services.length; i++ )            {                Service service = services[i];                try                {                    getLogger().debug( "preparing service" + service.getURI() );                    service.prepare();                }                catch( AvailabilityException e )                {                    URI uri = getURI();                    final String error =                       "Failed to initialize component due to non-availability of a dependent service."                      + "\nComponent: " + component.getLocalURI()                      + "\nService Provider: " + service.getURI();                    throw new ControlException( uri, error, e );                }            }        }        */        Object instance = getInstance( component );        List visited = new LinkedList();        State graph = component.getStateGraph();        Class subject = component.getDeploymentClass();        validate( subject, graph );        boolean flag = true;        while( flag  )        {            State state = component.getCurrentState();            Transition initialization = state.getInitialization();            if( null == initialization )            {                flag = false;            }            else if( false == visited.contains( state.getName() ) )            {                visited.add( state.getName() );                flag = applyTransition( component, initialization );            }            else            {                boolean first = true;                StringBuffer buffer = new StringBuffer();                buffer.append( "Initialization sequence aborted." );                buffer.append( "\nReason: detection of a recursive initialization sequence" );                Iterator iterator = visited.iterator();                while( iterator.hasNext() )                {                     String name = (String) iterator.next();                     if( first )                     {                         buffer.append( "\n  State [" + name + "]" );                         first = false;                     }                     else                     {                         buffer.append( " --> [" + name + "]" );                     }                }                buffer.append( " --> [" + state.getName() + "]" );                String error = buffer.toString();                visited.clear();                throw new RecursiveInitializationException( error );            }        }        component.setInitialized( true );    }