protected function createValueSchema(array $definition)
    {
        if (!isset($definition['properties'])) {
            throw new Exception("Missing required key 'properties' within assoc definition.");
        }
        return $this->getSchema()->getFactory()->createSchema(
            $this->getName().'_type',
            [ 'type' => 'assoc', 'properties' => $definition['properties'] ],
            $this
        );
    }