Buggy code:
public abstract class SOContainer implements ISharedObjectContainer { class LoadingSharedObject implements ISharedObject { Object credentials ; ReplicaSharedObjectDescription description ; Thread runner = null ; ID fromID = null ; LoadingSharedObject ( ID fromID , ReplicaSharedObjectDescription sd , Object credentials ) { } public void dispose ( ID containerID ) { } public Object getAdapter ( Class clazz ) { return null ; } ID getHomeID ( ) { } ID getID ( ) { } Thread getThread ( ) { } public void handleEvent ( Event event ) { } public void handleEvents ( Event [ ] events ) { } public void init ( ISharedObjectConfig initData ) throws SharedObjectInitException { } void start ( ) { } } class MessageReceiver implements ISynchAsynchEventHandler { public Object getAdapter ( Class clazz ) { return null ; } public void handleAsynchEvent ( AsynchEvent event ) throws IOException { } public void handleDisconnectEvent ( DisconnectEvent event ) { } public Object handleSynchEvent ( SynchEvent event ) throws IOException { } public ID getEventHandlerID ( ) { } } public static final String DEFAULT_OBJECT_ARG_KEY = ( SOContainer . class . getName ( ) ) + ".sharedobjectargs" ; public static final String DEFAULT_OBJECT_ARGTYPES_KEY = ( SOContainer . class . getName ( ) ) + ".sharedobjectargs" ; protected ISharedObjectContainerConfig config = null ; protected SOContainerGMM groupManager = null ; protected boolean isClosing = false ; private Vector listeners = null ; protected ThreadGroup loadingThreadGroup = null ; protected SOContainer . MessageReceiver receiver ; private long sequenceNumber = 0L ; protected SOManager sharedObjectManager = null ; protected ISharedObjectPolicy policy = null ; protected ThreadGroup sharedObjectThreadGroup = null ; public SOContainer ( ISharedObjectContainerConfig config ) { } public void addListener ( IContainerListener l ) { } protected void setRemoteAddPolicy ( ISharedObjectPolicy policy ) { } protected boolean addNewRemoteMember ( ID memberID , Object data ) { } protected ISharedObjectContainerTransaction addSharedObject0 ( ID id , ISharedObject s , Map props ) throws Exception { } protected void addSharedObjectAndWait ( ID id , ISharedObject s , Map properties ) throws Exception { } protected ISharedObjectContainerTransaction addSharedObjectWrapper ( SOWrapper wrapper ) throws Exception { } protected boolean addToLoading ( SOContainer . LoadingSharedObject lso ) { } protected Object checkRemoteCreate ( ID fromID , ID toID , ReplicaSharedObjectDescription desc ) throws Exception { } protected void debug ( String msg ) { } protected void traceStack ( String msg , Throwable e ) { } protected boolean destroySharedObject ( ID sharedObjectID ) { } public void dispose ( ) { } protected void fireContainerEvent ( IContainerEvent event ) { } protected final void forward ( ID fromID , ID toID , ContainerMessage data ) throws IOException { } protected abstract void forwardExcluding ( ID from , ID excluding , ContainerMessage data ) throws IOException { } protected abstract void forwardToRemote ( ID from , ID to , ContainerMessage data ) throws IOException { } public Object getAdapter ( Class adapter ) { if ( adapter . isInstance ( this ) ) { return this ; } else { <START_BUG> return Platform . getAdapterManager ( ) . getAdapter ( this , adapter ) ; <END_BUG> } } public Object [ ] getArgsFromProperties ( SharedObjectDescription sd ) { } public String [ ] getArgTypesFromProperties ( SharedObjectDescription sd ) { } protected byte [ ] serializeObject ( Serializable obj ) throws IOException { } protected ClassLoader getClassLoaderForContainer ( ) { } protected ClassLoader getClassLoaderForSharedObject ( SharedObjectDescription sd ) { } public ISharedObjectContainerConfig getConfig ( ) { } public abstract ID getConnectedID ( ) { } public ID [ ] getGroupMemberIDs ( ) { } protected Object getGroupMembershipLock ( ) { } public ID getID ( ) { } protected int getMaxGroupMembers ( ) { } protected Thread getNewSharedObjectThread ( ID sharedObjectID , Runnable runnable ) { } protected long getNextSequenceNumber ( ) { } protected ContainerMessage deserializeContainerMessage ( byte [ ] bytes ) throws IOException { } public ID [ ] getOtherMemberIDs ( ) { } protected ISynchAsynchEventHandler getReceiver ( ) { } protected ISharedObject getSharedObject ( ID id ) { } protected ID [ ] getSharedObjectIDs ( ) { } public ISharedObjectManager getSharedObjectManager ( ) { } protected ThreadGroup getSharedObjectThreadGroup ( ) { } protected SOWrapper getSharedObjectWrapper ( ID id ) { } protected void handleAsynchIOException ( IOException except , AsynchEvent e ) { } protected void handleCreateMessage ( ContainerMessage mess ) throws IOException { } protected void handleCreateResponseMessage ( ContainerMessage mess ) throws IOException { } protected abstract void handleLeaveGroupMessage ( ContainerMessage mess ) { } protected void handleSharedObjectDisposeMessage ( ContainerMessage mess ) throws IOException { } protected boolean verifyToIDForSharedObjectMessage ( ID toID ) { } protected void handleSharedObjectMessage ( ContainerMessage mess ) throws IOException { } protected void handleUnidentifiedMessage ( ContainerMessage mess ) throws IOException { } protected abstract void handleViewChangeMessage ( ContainerMessage mess ) throws IOException { } protected boolean isClosing ( ) { } public abstract boolean isGroupManager ( ) { } public abstract void connect ( ID groupID , IConnectContext connectContext ) throws ContainerConnectException { } protected void killConnection ( IConnection conn ) { } public abstract void disconnect ( ) { } protected ISharedObject load ( SharedObjectDescription sd ) throws Exception { } protected void log ( String msg ) { } protected void logException ( String msg , Throwable e ) { } protected ThreadGroup createLoadingThreadGroup ( ) { } protected SOConfig createSharedObjectConfig ( ID id , ISharedObject obj , Map props ) { } protected SOConfig createRemoteSharedObjectConfig ( ID fromID , ReplicaSharedObjectDescription sd , ISharedObject obj ) { } protected SOContext createSharedObjectContext ( SOConfig soconfig , IQueueEnqueue queue ) { } protected SOContext createRemoteSharedObjectContext ( SOConfig soconfig , IQueueEnqueue queue ) { } protected SOWrapper createSharedObjectWrapper ( ID id , ISharedObject s , Map props ) { } protected SOWrapper createRemoteSharedObjectWrapper ( ID fromID , ReplicaSharedObjectDescription sd , ISharedObject s ) { } protected void memberLeave ( ID target , IConnection conn ) { } protected void moveFromLoadingToActive ( SOWrapper wrap ) { }

Fix:
return Platform . getAdapterManager ( ) . loadAdapter ( this , adapter . getName ( ) ) ;