public bool Matches(opaqueDataListOptionType that, @operator op)
        {
            if (that != null)
            {
                List <opaqueData> opaqueList = that.opaqueData;
                if (opaqueList != null)
                {
                    if (op.Equals(@operator.equals))
                    {
                        if (opaqueList.Count != opaqueDataList.Count)
                        {
                            return(false);
                        }
                        for (int i = 0; i < opaqueList.Count; i++)
                        {
                            BaseOpaqueData opaque   = new BaseOpaqueData(opaqueList[i]);
                            BaseOpaqueData myOpaque = opaqueDataList[i];
                            if (!OpaqueDataUtil.Equals(opaque, myOpaque))
                            {
                                return(false);
                            }
                        }
                        return(true);
                    }
                    else if (op.Equals(@operator.contains))
                    {
                        if (opaqueList.Count > opaqueDataList.Count)
                        {
                            return(false);
                        }
                        for (int i = 0; i < opaqueList.Count; i++)
                        {
                            BaseOpaqueData opaque = new BaseOpaqueData(opaqueList[i]);
                            bool           found  = false;
                            for (int j = 0; j < opaqueDataList.Count; j++)
                            {
                                BaseOpaqueData myOpaque = opaqueDataList[j];
                                if (OpaqueDataUtil.Equals(opaque, myOpaque))
                                {
                                    found = true;
                                    break;
                                }
                            }
                            if (!found)
                            {
                                return(false);
                            }
                        }
                        return(true);
                    }
                    else
                    {
                        log.Warn("Unsupported expression operator: " + op);
                    }
                }
            }

            return(false);
        }
 /**
  * Instantiates a new opaque opaqueData list option.
  *
  * @param opaqueDataListOption the opaque opaqueData list option
  */
 public BaseOpaqueDataListOption(opaqueDataListOptionType opaqueDataListOption) : base()
 {
     if (opaqueDataListOption != null)
     {
         List <opaqueData> _opaqueDataList = opaqueDataListOption.opaqueData;
         if (_opaqueDataList != null)
         {
             foreach (opaqueData opaqueData in _opaqueDataList)
             {
                 AddOpaqueData(new BaseOpaqueData(opaqueData));
             }
         }
     }
 }