static Properties overrideWithSysProps(Properties props, Logger log) {
        Properties sysProps = null;
        try {
            sysProps = System.getProperties();
        } catch (AccessControlException e) {
            log.warn(
                "Skipping overriding quartz properties with System properties " +
                "during initialization because of an AccessControlException.  " +
                "This is likely due to not having read/write access for " +
                "java.util.PropertyPermission as required by java.lang.System.getProperties().  " +
                "To resolve this warning, either add this permission to your policy file or " +
                "use a non-default version of initialize().",
                e);
        }

        if (sysProps != null) {
            // Use the propertyNames to iterate to avoid 
            // a possible ConcurrentModificationException
            Enumeration<?> en = sysProps.propertyNames();
            while (en.hasMoreElements()) {
                Object name = en.nextElement();
                Object value = sysProps.get(name);
                if (name instanceof String && value instanceof String) {
                    // Properties javadoc discourages use of put so we use setProperty
                    props.setProperty((String) name, (String) value);
                }
            }
        }

        return props;
    }
@Test
	public void testOverrideSystemProperties() {
	    Properties p = new Properties();
	    p.setProperty("nonsense1", "hello1");
	    p.setProperty("nonsense2", "hello2");
	    System.setProperty("nonsense1", "boo1");
	    String osName = System.getProperty("os.name");
	    Properties q = StdSchedulerFactory.overrideWithSysProps(p, NOPLogger.NOP_LOGGER);
	    assertEquals("boo1", q.get("nonsense1"));
	    assertEquals(osName, q.get("os.name"));
	}