| var $metadata = require('./_metadata'); | 
| var anObject = require('./_an-object'); | 
| var aFunction = require('./_a-function'); | 
| var toMetaKey = $metadata.key; | 
| var ordinaryDefineOwnMetadata = $metadata.set; | 
|   | 
| $metadata.exp({ metadata: function metadata(metadataKey, metadataValue) { | 
|   return function decorator(target, targetKey) { | 
|     ordinaryDefineOwnMetadata( | 
|       metadataKey, metadataValue, | 
|       (targetKey !== undefined ? anObject : aFunction)(target), | 
|       toMetaKey(targetKey) | 
|     ); | 
|   }; | 
| } }); |