| Index: service/datastore/properties.go | 
| diff --git a/service/datastore/properties.go b/service/datastore/properties.go | 
| index d42c098b0ff4c618fe2e271f2e9ba39775b4b861..473269fc92dce5b7400f9a582590c9ef345a89ee 100644 | 
| --- a/service/datastore/properties.go | 
| +++ b/service/datastore/properties.go | 
| @@ -680,6 +680,11 @@ type PropertyLoadSaver interface { | 
|  | 
| MetaGetter | 
|  | 
| +	// GetAllMeta returns a PropertyMap with all of the metadata in this | 
| +	// PropertyLoadSaver. If a metadata field has an error during serialization, | 
| +	// it is skipped. | 
| +	GetAllMeta() PropertyMap | 
| + | 
| // SetMeta allows you to set the current value of the meta-keyed field. | 
| SetMeta(key string, val interface{}) error | 
|  | 
| @@ -753,6 +758,19 @@ func (pm PropertyMap) GetMeta(key string) (interface{}, error) { | 
| return v[0].Value(), nil | 
| } | 
|  | 
| +// GetAllMeta implements PropertyLoadSaver.GetAllMeta. | 
| +func (pm PropertyMap) GetAllMeta() PropertyMap { | 
| +	ret := make(PropertyMap, 8) | 
| +	for k, v := range pm { | 
| +		if isMetaKey(k) { | 
| +			newV := make([]Property, len(v)) | 
| +			copy(newV, v) | 
| +			ret[k] = newV | 
| +		} | 
| +	} | 
| +	return ret | 
| +} | 
| + | 
| // GetMetaDefault is the implementation of PropertyLoadSaver.GetMetaDefault. | 
| func (pm PropertyMap) GetMetaDefault(key string, dflt interface{}) interface{} { | 
| return GetMetaDefaultImpl(pm.GetMeta, key, dflt) | 
|  |