public bool HasProperty(String key)
 {
     for (int k = chain.Count - 1; k >= 0; --k)
     {
         ChainedProperty             p    = chain[k];
         Dictionary <String, String> prop = p.property;
         if (prop.ContainsKey(key))
         {
             return(true);
         }
     }
     return(false);
 }
 public String this[String key] {
     get {
         for (int k = chain.Count - 1; k >= 0; --k)
         {
             ChainedProperty             p    = chain[k];
             Dictionary <String, String> prop = p.property;
             if (prop.ContainsKey(key))
             {
                 return(prop[key]);
             }
         }
         return(null);
     }
 }