public void set(final String area, final String name, final String value) {
    if(area.contains("]")) throw new IllegalArgumentException("invalud area name: "
        + area);
    if(name.contains("=")) throw new IllegalArgumentException("invalid name: " + name);
    final Entry entry = new Entry(area.trim(), name.trim());
    final String v = value.trim();
    if(entries.containsKey(entry)) {
      final String old = entries.get(entry);
      if (v.equals(old)) return;
    }
    entries.put(entry, v);
    hasChanged = true;
  }