| 
<?phpnamespace Aws\Api;
 
 /**
 * Represents a map shape.
 */
 class MapShape extends Shape
 {
 /** @var Shape */
 private $value;
 
 /** @var Shape */
 private $key;
 
 public function __construct(array $definition, ShapeMap $shapeMap)
 {
 $definition['type'] = 'map';
 parent::__construct($definition, $shapeMap);
 }
 
 /**
 * @return Shape
 * @throws \RuntimeException if no value is specified
 */
 public function getValue()
 {
 if (!$this->value) {
 if (!isset($this->definition['value'])) {
 throw new \RuntimeException('No value specified');
 }
 
 $this->value = Shape::create(
 $this->definition['value'],
 $this->shapeMap
 );
 }
 
 return $this->value;
 }
 
 /**
 * @return Shape
 */
 public function getKey()
 {
 if (!$this->key) {
 $this->key = isset($this->definition['key'])
 ? Shape::create($this->definition['key'], $this->shapeMap)
 : new Shape(['type' => 'string'], $this->shapeMap);
 }
 
 return $this->key;
 }
 }
 
 |