code: private void copyTables ()
      {
          // Start by copying our parent's bindings
          prefixTable = (Hashtable)prefixTable.clone();
          uriTable = (Hashtable)uriTable.clone();
  
          // Replace the caches with empty ones, rather than
          // trying to determine which bindings should be flushed.
          // As far as I can tell, these caches are never actually
          // used in Xalan... More efficient to remove the whole
          // cache system? ****
          if(elementNameTable!=null)
              elementNameTable=new Hashtable(); 
          if(attributeNameTable!=null)
              attributeNameTable=new Hashtable(); 
          tablesDirty = true;
      }
docs: Copy on write for the internal tables in this context.
  
  <p>This class is optimized for the normal case where most
  elements do not contain Namespace declarations. In that case,
  the Context2 will share data structures with its parent.
  New tables are obtained only when new declarations are issued,
  so they can be popped off the stack.</p>
  
  <p> JJK: **** Alternative: each Context2 might declare
  _only_ its local bindings, and delegate upward if not found.</p>