class SystemProperties {
    /**
     * Thread-safe System.properties copy implementation.
     */
    public static void addSystemProperties(Properties props) {
        props.putAll(getSystemProperties());
    }

    /**
     * Returns a copy of {@link System#getProperties()} in a thread-safe manner.
     *
     * @return {@link System#getProperties()} obtained in a thread-safe manner.
     */
    public static Properties getSystemProperties() {
        return copyProperties(System.getProperties());
    }

    /**
     * Copies the given {@link Properties} object into a new {@link Properties} object, in a thread-safe manner.
     * @param properties Properties to copy.
     * @return Copy of the given properties.
     */
    public static Properties copyProperties(Properties properties) {<FILL_FUNCTION_BODY>}
}

        final Properties copyProperties = new Properties();
        // guard against modification/removal of keys in the given properties (MNG-5670, MNG-6053, MNG-6105)
        synchronized (properties) {
            copyProperties.putAll(properties);
        }
        return copyProperties;
    
<no_super_class>