///<summary>Sets runtime facet handler. If has the same name as a preload handler, for the
 ///duration of this browser, this one will be used.</summary>
 ///<param name="facetHandler">Runtime facet handler </param>
 public virtual void SetFacetHandler(FacetHandler facetHandler)
 {
     List<string> dependsOn = facetHandler.DependsOn;
     BoboIndexReader indexReader = GetIndexReader();
     if (dependsOn.Count > 0)
     {
         List<string>.Enumerator iter = dependsOn.GetEnumerator();
         while (iter.MoveNext())
         {
             string fn = iter.Current;
             FacetHandler f = null;
             if (runtimeFacetHandlerMap.ContainsKey(fn))
             {
                 f = runtimeFacetHandlerMap[fn];
             }
             if (f == null)
             {
                 f = indexReader.GetFacetHandler(fn);
             }
             if (f == null)
             {
                 throw new System.IO.IOException("depended on facet handler: " + fn + ", but is not found");
             }
             facetHandler.PutDependedFacetHandler(f);
         }
     }
     facetHandler.Load(indexReader);
     runtimeFacetHandlerMap.Add(facetHandler.Name, facetHandler);
 }