public function prefix($prefix, $callback)
    {
        $partial = new self($this->get($prefix));

        // We will pass the newly created "partial" Configuration object to the
        // callback so that it can be used within the given prefix.
        $callback($partial);

        // We want to make sure that any changes made to the prefixed object are
        // reflected in this object, so we will swap it with the partial.
        $this->set($prefix, $partial->all());

        unset($partial);
    }