// Constructor
 public PointsToAndWriteEffects(Method m, PointsToAnalysis pta) : base(m,pta)
 {
     this.writeEffects = new AbstractEffects();
     this.allWriteEffects = new AbstractEffects();
     this.readEffects = new AbstractEffects();
     this.allReadEffects = new AbstractEffects();
     this.callToNonAnalyzableMethods = new Dictionary<Label, Set<Method>>();
     // this.nonNullState = null;
 }
 // Copy Constructor
 public PointsToAndWriteEffects(PointsToAndWriteEffects ptWE): base(ptWE)
 {
     writeEffects = new AbstractEffects(ptWE.writeEffects);
     allWriteEffects = ptWE.allWriteEffects;
     readEffects = new AbstractEffects(ptWE.readEffects); ;
     allReadEffects = ptWE.allReadEffects;
     callToNonAnalyzableMethods = new Dictionary<Label, Set<Method>>(ptWE.callToNonAnalyzableMethods);
     
     //if(ptWE.nonNullState!=null)
     //    nonNullState = new NonNullState((NonNullState)ptWE.nonNullState);
 }
        /// <summary>
        /// Given a Set of effects over abstract heap locations,
        /// computes a set of effects over the method parameters
        /// or in the global scope
        /// </summary>
        /// <param name="Effects"></param>
        /// <returns></returns>
        public Set<VariableEffect> ComputeEffects(AbstractEffects Effects)
        {
            Set<VariableEffect> variableEffects = new Set<VariableEffect>();

            // Traverse every write effect
            foreach (AField af in Effects)
              variableEffects.AddRange(EffectsInVariables(af));
            return variableEffects;
        }
 public bool Includes(AbstractEffects we)
 {
     return modifies.Includes(we.modifies);
 }
 public void Join(AbstractEffects we)
 {
     if (modifies != we.modifies)
     {
         modifies.AddRange(we.modifies);
     }
 }
 public AbstractEffects(AbstractEffects w)
 {
     modifies = new Set<AField>(w.modifies);
 }
        public PointsToAndWriteEffects(PointsToState ptWE)
            : base(ptWE)
        {
            this.writeEffects = new AbstractEffects();
            this.allWriteEffects = new AbstractEffects();
            this.readEffects = new AbstractEffects();
            this.allReadEffects = new AbstractEffects();
            this.callToNonAnalyzableMethods = new Dictionary<Label, Set<Method>>();
            

            //if(ptWE.nonNullState!=null)
            //    nonNullState = new NonNullState((NonNullState)ptWE.nonNullState);
        }