gt:       if (obj == null)
context: /*
   * IronJacamar, a Java EE Connector Architecture implementation
   * Copyright 2014, Red Hat Inc, and individual contributors
   * as indicated by the @author tags. See the copyright.txt file in the
   * distribution for a full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the Eclipse Public License 1.0 as
   * published by the Free Software Foundation.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Eclipse
   * Public License for more details.
   *
   * You should have received a copy of the Eclipse Public License 
   * along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.ironjacamar.common.metadata.resourceadapter;
  
  import org.ironjacamar.common.api.metadata.common.TransactionSupportEnum;
  import org.ironjacamar.common.api.metadata.resourceadapter.Activation;
  import org.ironjacamar.common.api.metadata.resourceadapter.AdminObject;
  import org.ironjacamar.common.api.metadata.resourceadapter.ConnectionDefinition;
  import org.ironjacamar.common.api.metadata.resourceadapter.WorkManager;
  import org.ironjacamar.common.metadata.common.AbstractMetadata;
  
  import java.util.ArrayList;
  import java.util.Collections;
  import java.util.Iterator;
  import java.util.List;
  import java.util.Map;
  import java.util.TreeMap;
  
  /**
   * A resource adapter activation
   *
   * @author <a href="jesper.pedersen@ironjacamar.org">Jesper Pedersen</a>
   */
  public class ActivationImpl extends AbstractMetadata implements Activation
  {
     /** The serialVersionUID */
     private static final long serialVersionUID = 1L;
  
     /** transactionSupport **/
     protected TransactionSupportEnum transactionSupport;
  
     /**
      *  configProperties
      */
     protected Map<String, String> configProperties;
  
     /**
      *  adminObjects
      */
     protected List<AdminObject> adminObjects;
  
     /**
      *  connectionDefinitions
      */
     protected List<ConnectionDefinition> connectionDefinitions;
  
     /**
      *  beanValidationGroups
      */
     protected List<String> beanValidationGroups;
  
     /** bootstrapContext **/
     protected String bootstrapContext;
  
     /** archive */
     protected String archive;
  
     /** id */
     protected String id;
  
     /** workmanager */
     protected WorkManager workmanager;
  
     /**
      * Constructor
      *
      * @param id The id
      * @param archive archive
      * @param transactionSupport transactionSupport
      * @param connectionDefinitions connectionDefinitions
      * @param adminObjects adminObjects
      * @param configProperties configProperties
      * @param beanValidationGroups beanValidationGroups
      * @param bootstrapContext bootstrapContext
      * @param workmanager workmanager
      * @param expressions expressions
      */
     public ActivationImpl(String id, String archive, TransactionSupportEnum transactionSupport,
                           List<ConnectionDefinition> connectionDefinitions, List<AdminObject> adminObjects,
                           Map<String, String> configProperties, List<String> beanValidationGroups,
                           String bootstrapContext, WorkManager workmanager,
                           Map<String, String> expressions)
     {
        super(expressions);
        this.id = id;
        this.archive = archive;
        this.transactionSupport = transactionSupport;
  
        if (connectionDefinitions != null)
        {
           this.connectionDefinitions = new ArrayList<ConnectionDefinition>(connectionDefinitions.size());
           this.connectionDefinitions.addAll(connectionDefinitions);
        }
        else
        {
           this.connectionDefinitions = null;
        }
  
        if (adminObjects != null)
        {
           this.adminObjects = new ArrayList<AdminObject>(adminObjects.size());
           this.adminObjects.addAll(adminObjects);
        }
        else
        {
           this.adminObjects = null;
        }
  
        if (configProperties != null)
        {
           this.configProperties = new TreeMap<String, String>();
           this.configProperties.putAll(configProperties);
        }
        else
        {
           this.configProperties = null;
        }
  
        if (beanValidationGroups != null)
        {
           this.beanValidationGroups = new ArrayList<String>(beanValidationGroups.size());
           this.beanValidationGroups.addAll(beanValidationGroups);
        }
        else
        {
           this.beanValidationGroups = null;
        }
  
        this.bootstrapContext = bootstrapContext;
        this.workmanager = workmanager;
     }
  
     /**
      * Get the transactionSupport.
      *
      * @return the transactionSupport.
      */
     @Override
     public TransactionSupportEnum getTransactionSupport()
     {
        return transactionSupport;
     }
  
     /**
      * Get the connectionFactories.
      *
      * @return the connectionFactories.
      */
     @Override
     public List<ConnectionDefinition> getConnectionDefinitions()
     {
        if (connectionDefinitions == null)
           return null;
  
        return Collections.unmodifiableList(connectionDefinitions);
     }
  
     /**
      * Get the adminObjects.
      *
      * @return the adminObjects.
      */
     @Override
     public List<AdminObject> getAdminObjects()
     {
        return adminObjects == null ? null : Collections.unmodifiableList(adminObjects);
     }
  
     /**
      * Get the configProperties.
      *
      * @return the configProperties.
      */
     @Override
     public Map<String, String> getConfigProperties()
     {
        return configProperties == null ? null : Collections.unmodifiableMap(configProperties);
     }
  
     /**
      * Get the beanValidationGroups.
      *
      * @return the beanValidationGroups.
      */
     @Override
     public List<String> getBeanValidationGroups()
     {
        return beanValidationGroups == null ? null : Collections.unmodifiableList(beanValidationGroups);
     }
  
     /**
      * Get the bootstrapContext.
      *
      * @return the bootstrapContext.
      */
     @Override
     public String getBootstrapContext()
     {
        return bootstrapContext;
     }
  
     /**
      * Get the id.
      *
      * @return the value.
      */
     @Override
     public String getId()
     {
        return id;
     }
  
     /**
      * Get the archive.
      *
      * @return the archive.
      */
     @Override
     public String getArchive()
     {
        return archive;
     }
  
     /**
      * {@inheritDoc}
      */
     public WorkManager getWorkManager()
     {
        return workmanager;
     }
  
     @Override
     public int hashCode()
     {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((adminObjects == null) ? 0 : adminObjects.hashCode());
        result = prime * result + ((beanValidationGroups == null) ? 0 : beanValidationGroups.hashCode());
        result = prime * result + ((bootstrapContext == null) ? 0 : bootstrapContext.hashCode());
        result = prime * result + ((configProperties == null) ? 0 : configProperties.hashCode());
        result = prime * result + ((connectionDefinitions == null) ? 0 : connectionDefinitions.hashCode());
        result = prime * result + ((transactionSupport == null) ? 0 : transactionSupport.hashCode());
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        result = prime * result + ((archive == null) ? 0 : archive.hashCode());
        result = prime * result + ((workmanager == null) ? 0 : workmanager.hashCode());
        return result;
     }
  
     @Override
     public boolean equals(Object obj)
     {
        if (this == obj)
           return true;
  