Program: 104565
Project: 104565
Buggy source:
/** 
 * Initialized the service implementation, and puts it in a sate where it could interoperate with other services. It is strongly recomended that properties in this Map be mapped to property names as specified by <tt>AccountProperties</tt>.
 * @param screenname the account id/uin/screenname of the account that we'reabout to create
 * @param initializationProperties all properties needed fo initializing theaccount.
 * @param accountID the identifier of the account that this protocolprovider represents.
 * @see net.java.sip.communicator.service.protocol.AccountID
 */
protected void initialize(String screenname,Map initializationProperties,AccountID accountID){
synchronized (initializationLock) {
    this.accountID=accountID;
    String password=(String)initializationProperties.get(AccountProperties.PASSWORD);
    session=new DefaultAppSession();
    aimSession=session.openAimSession(new Screenname(screenname));
    aimConnection=aimSession.openConnection(new AimConnectionProperties(new Screenname(screenname),password));
    aimConnStateListener=new AimConnStateListener();
    aimConnection.addStateListener(aimConnStateListener);
    aimIcbmListener=new AimIcbmListener();
    OperationSetPersistentPresence persistentPresence=new OperationSetPersistentPresenceIcqImpl(this,screenname);
    supportedOperationSets.put(OperationSetPersistentPresence.class.getName(),persistentPresence);
    supportedOperationSets.put(OperationSetPresence.class.getName(),persistentPresence);
    OperationSetBasicInstantMessaging basicInstantMessaging=new OperationSetBasicInstantMessagingIcqImpl(this);
    supportedOperationSets.put(OperationSetBasicInstantMessaging.class.getName(),basicInstantMessaging);
    OperationSetTypingNotifications typingNotifications=new OperationSetTypingNotificationsIcqImpl(this);
    supportedOperationSets.put(OperationSetTypingNotifications.class.getName(),typingNotifications);
    this.infoRetreiver=new InfoRetreiver(this,screenname);
    OperationSetServerStoredContactInfo serverStoredContactInfo=new OperationSetServerStoredContactInfoIcqImpl(infoRetreiver);
    supportedOperationSets.put(OperationSetServerStoredContactInfo.class.getName(),serverStoredContactInfo);
    OperationSetServerStoredAccountInfo serverStoredAccountInfo=new OperationSetServerStoredAccountInfoIcqImpl(infoRetreiver,screenname,this);
    supportedOperationSets.put(OperationSetServerStoredAccountInfo.class.getName(),serverStoredAccountInfo);
    OperationSetWebAccountRegistration webAccountRegistration=new OperationSetWebAccountRegistrationIcqImpl();
    supportedOperationSets.put(OperationSetWebAccountRegistration.class.getName(),webAccountRegistration);
    OperationSetWebContactInfo webContactInfo=new OperationSetWebContactInfoIcqImpl();
    supportedOperationSets.put(OperationSetWebContactInfo.class.getName(),webContactInfo);
    isInitialized=true;
  }
}

Fixed version (ground truth):
/** 
 * Initialized the service implementation, and puts it in a sate where it could interoperate with other services. It is strongly recomended that properties in this Map be mapped to property names as specified by <tt>AccountProperties</tt>.
 * @param screenname the account id/uin/screenname of the account that we'reabout to create
 * @param initializationProperties all properties needed fo initializing theaccount.
 * @param accountID the identifier of the account that this protocolprovider represents.
 * @see net.java.sip.communicator.service.protocol.AccountID
 */
protected void initialize(String screenname,Map initializationProperties,AccountID accountID){
synchronized (initializationLock) {
    this.accountID=accountID;
    OperationSetPersistentPresence persistentPresence=new OperationSetPersistentPresenceIcqImpl(this,screenname);
    supportedOperationSets.put(OperationSetPersistentPresence.class.getName(),persistentPresence);
    supportedOperationSets.put(OperationSetPresence.class.getName(),persistentPresence);
    OperationSetBasicInstantMessaging basicInstantMessaging=new OperationSetBasicInstantMessagingIcqImpl(this);
    supportedOperationSets.put(OperationSetBasicInstantMessaging.class.getName(),basicInstantMessaging);
    OperationSetTypingNotifications typingNotifications=new OperationSetTypingNotificationsIcqImpl(this);
    supportedOperationSets.put(OperationSetTypingNotifications.class.getName(),typingNotifications);
    this.infoRetreiver=new InfoRetreiver(this,screenname);
    OperationSetServerStoredContactInfo serverStoredContactInfo=new OperationSetServerStoredContactInfoIcqImpl(infoRetreiver);
    supportedOperationSets.put(OperationSetServerStoredContactInfo.class.getName(),serverStoredContactInfo);
    OperationSetServerStoredAccountInfo serverStoredAccountInfo=new OperationSetServerStoredAccountInfoIcqImpl(infoRetreiver,screenname,this);
    supportedOperationSets.put(OperationSetServerStoredAccountInfo.class.getName(),serverStoredAccountInfo);
    OperationSetWebAccountRegistration webAccountRegistration=new OperationSetWebAccountRegistrationIcqImpl();
    supportedOperationSets.put(OperationSetWebAccountRegistration.class.getName(),webAccountRegistration);
    OperationSetWebContactInfo webContactInfo=new OperationSetWebContactInfoIcqImpl();
    supportedOperationSets.put(OperationSetWebContactInfo.class.getName(),webContactInfo);
    isInitialized=true;
  }
}