singleton = new Provider ();
singleton = (Provider) AccessController.doPrivileged (new PrivilegedAction() { public Object run() { return new Provider(); } });
  public static synchronized Provider provider ()  {    if (singleton == null)      singleton = new Provider ();    return singleton;  }