+ /**
+ * Returns the metadata for the given value.
+ *
+ * @param mixed $value Some value
+ *
+ * @return MetadataInterface The metadata for the value
+ *
+ * @throws NoSuchMetadataException If no metadata exists for the given value
+ */
+ public function getMetadataFor($value);
+
+ /**
+ * Returns whether the class is able to return metadata for the given value.
+ *
+ * @param mixed $value Some value
+ *
+ * @return bool Whether metadata can be returned for that value
+ */
+ public function hasMetadataFor($value);