public void merge(Map<String, Section> m) {

        if (m != null) {
            for (Entry<String, Section> entry : m.entrySet()) {
                Section section = this.getSection(entry.getKey());
                if (section == null) {
                    section = addSection(entry.getKey());
                }
                section.putAll(entry.getValue());
            }
        }
    }
Merges the contents of <code>m</code>'s {@link Section} objects into self.
This differs from {@link Ini#putAll(Map)}, in that each section is merged with the existing one.
For example the following two ini blocks are merged and the result is the third<BR/>
<p>
Initial:
<pre>
<code>[section1]
key1 = value1

[section2]
key2 = value2
</code> </pre>
<p>
To be merged:
<pre>
<code>[section1]
foo = bar

[section2]
key2 = new value
</code> </pre>
<p>
Result:
<pre>
<code>[section1]
key1 = value1
foo = bar

[section2]
key2 = new value
</code> </pre>

</p>

@param m map to be merged
@since 1.4
config/core/src/main/java/org/apache/shiro/config/Ini.java