internal void Register(Resource resource)
 {
     if (!resources.Contains(resource))
         resources.Add(resource);
 }
 internal void Unregister(Resource resource)
 {
     resources.Remove(resource);
 }
 private Resource lookupResource(string resourceName)
 {
     Resource result;
     if (!resources.TryGetValue(resourceName, out result))
     {
         result = new Resource(engine, this, resourceName);
         resources.Add(resourceName, result);
     }
     return result;
 }