internal override void AnalyzeUsage(CodeExpression expression, RuleAnalysis analysis, bool isRead, bool isWritten, RulePathQualifier qualifier)
        {
            if (analysis.ForWrites && !isWritten)            // If we're tracking writes, then ignore things that aren't written.
                return;
            else if (!analysis.ForWrites && !isRead)   // ... and vice-versa
                return;

            StringBuilder sb = new StringBuilder("this/");
            for (RulePathQualifier q = qualifier; q != null; q = q.Next)
            {
                sb.Append(q.Name);
                if (q.Name == "*")
                {
                    if (q.Next != null)
                        throw new NotSupportedException(Messages.InvalidWildCardInPathQualifier);
                }
                else
                {
                    sb.Append("/");
                }
            }

            // Add the symbol to our set.
            analysis.AddSymbol(sb.ToString());
        }
 internal override void AnalyzeUsage(CodeExpression expression, RuleAnalysis analysis, bool isRead, bool isWritten, RulePathQualifier qualifier)
 {
     if ((!analysis.ForWrites || isWritten) && (analysis.ForWrites || isRead))
     {
         StringBuilder builder = new StringBuilder("this/");
         for (RulePathQualifier qualifier2 = qualifier; qualifier2 != null; qualifier2 = qualifier2.Next)
         {
             builder.Append(qualifier2.Name);
             if (qualifier2.Name == "*")
             {
                 if (qualifier2.Next != null)
                 {
                     throw new NotSupportedException(Messages.InvalidWildCardInPathQualifier);
                 }
             }
             else
             {
                 builder.Append("/");
             }
         }
         analysis.AddSymbol(builder.ToString());
     }
 }
 internal override void AnalyzeUsage(CodeExpression expression, RuleAnalysis analysis, bool isRead, bool isWritten, RulePathQualifier qualifier)
 {
     if ((!analysis.ForWrites || isWritten) && (analysis.ForWrites || isRead))
     {
         StringBuilder builder = new StringBuilder("this/");
         for (RulePathQualifier qualifier2 = qualifier; qualifier2 != null; qualifier2 = qualifier2.Next)
         {
             builder.Append(qualifier2.Name);
             if (qualifier2.Name == "*")
             {
                 if (qualifier2.Next != null)
                 {
                     throw new NotSupportedException(Messages.InvalidWildCardInPathQualifier);
                 }
             }
             else
             {
                 builder.Append("/");
             }
         }
         analysis.AddSymbol(builder.ToString());
     }
 }