def add(self, logical_id, property, value):
if not logical_id or not property:<EOL><INDENT>raise ValueError("<STR_LIT>")<EOL><DEDENT>if not value or not isinstance(value, string_types):<EOL><INDENT>raise ValueError("<STR_LIT>")<EOL><DEDENT>if logical_id not in self._refs:<EOL><INDENT>self._refs[logical_id] = {}<EOL><DEDENT>if property in self._refs[logical_id]:<EOL><INDENT>raise ValueError("<STR_LIT>".format(logical_id, property))<EOL><DEDENT>self._refs[logical_id][property] = value<EOL>
Add the information that resource with given `logical_id` supports the given `property`, and that a reference
to `logical_id.property` resolves to given `value.

Example:

    "MyApi.Deployment" -> "MyApiDeployment1234567890"

:param logical_id: Logical ID of the resource  (Ex: MyLambdaFunction)
:param property: Property on the resource that can be referenced (Ex: Alias)
:param value: Value that this reference resolves to.
:return: nothing