code: protected Variable getVariableImpl( String name, boolean recurse )
          throws UtilEvalError
      {
          // check the external map for the variable name
          Object value = externalMap.get( name );
  
          if ( value == null && externalMap.containsKey( name ) )
              value = Primitive.NULL;
  
          Variable var;
          if ( value == null )
          {
              // The var is not in external map and it should therefore not be
              // found in local scope (it may have been removed via the map).
              // Clear it prophalactically.
              super.unsetVariable( name );
  
              // Search parent for var if applicable.
              var = super.getVariableImpl( name, recurse );
          } else
          {
              // Var in external map may be found in local scope with type and
              // modifier info.
              Variable localVar = super.getVariableImpl( name, false );
  
              // If not in local scope then it was added via the external map,
              // we'll wrap it and pass it along.  Else we'll use the one we
              // found.
              if ( localVar == null )
                  var = createVariable( name, null/*type*/, value, null/*mods*/ );
              else
                  var = localVar;
          }
  
          return var;
      }
docs: /*
  Notes: This implementation of getVariableImpl handles the following
  cases:
  1) var in map not in local scope - var was added through map
  2) var in map and in local scope - var was added through namespace
  3) var not in map but in local scope - var was removed via map
  4) var not in map and not in local scope - non-existent var
  
  Note: It would seem that we could simply override getImportedVar()
  in NameSpace, rather than this higher level method.  However we need
  more control here to change the import precedence and remove variables
  if they are removed via the extenal map.