anchor.diff:    getValue(config) => _computation(config);
   }
   
  +/**
  + * Function used to access different parts of the ConfigMap.
  + *
  + * [computation] is given a ConfigMap in a structure it'd have when it's constructed.
  + * Values in this ConfigMap can be accessed just like in a regular Map using operator [].
  + */
   $(dynamic computation(ConfigMap config)) => new ComputedValue(computation);
   
  +/**
  + * ConfigMap may be used just as a regular Map, but in addition, parts of the ConfigMap
  + * may be referenced even in construction of it using function [$]. Therefore, some duplications
  + * may be removed.
  + *
  + * Example:
  + *
  + *    ConfigMap configMap = new ConfigMap(
  + *      {
  + *        "id" : "13",
  + *        "user" : {
  + *          "name" : "John",
  + *          "surname" : "Doe",
  + *          "fullname" : $((c) => '${c['user']['name']} ${c['user']['surname']}'),
  + *          "hash" : $((c) => '${c['id']}${c['user']['fullname']}')
  + *        }
  + *      });
  + *
  + *    Map config = configMap.toMap();
  + *    print(config['user']['fullname']); // "John Doe"
  + */
   class ConfigMap {
     ConfigMap root;
     Map _data;
  
positive.code: 
  library clean_config;
  
  Map mergeMaps(Map a, Map b) {
    a = new Map.from(a);
    b = new Map.from(b);
  
negative.code:   }
  }
  
  /**
   * Stores all configurations, and allows a tree-like heritage structure of configurations.
   *
   * Every configuration is stored under a name. If the configuration specifies a parent name, the child
   * Map is merged into the parent Map (see [mergeMaps]).
   */
  class Configuration {
  
    final Map<String, Map > _configurations = {};
  
    /**
     * Register configuration under [name].
     *
     * If [parent] is specified, this [configuration] merges into the configuration
     * of parent Map.
     */
    void add(String name, Map configuration, {String parent: null}) {
      configuration['__name__'] = name;
  