docs: def getEncodableAttributes(self, obj, codec=None):
          """
          Must return a C{dict} of attributes to be encoded, even if its empty.
  
          @param codec: An optional argument that will contain the encoder
              instance calling this function.
          @since: 0.5
          """
          if not self._compiled:
              self.compile()
  
          if self.is_dict:
              return dict(obj)
  
          if self.shortcut_encode and self.dynamic:
              return obj.__dict__.copy()
  
          attrs = {}
  
          if self.static_attrs:
              for attr in self.static_attrs:
                  attrs[attr] = getattr(obj, attr, pyamf.Undefined)
  
          if not self.dynamic:
              if self.non_static_encodable_properties:
                  for attr in self.non_static_encodable_properties:
                      attrs[attr] = getattr(obj, attr)
  
              return attrs
  
          dynamic_props = util.get_properties(obj)
  
          if not self.shortcut_encode:
              dynamic_props = set(dynamic_props)
  
              if self.encodable_properties:
                  dynamic_props.update(self.encodable_properties)
  
              if self.static_attrs:
                  dynamic_props.difference_update(self.static_attrs)
  
              if self.exclude_attrs:
                  dynamic_props.difference_update(self.exclude_attrs)
  
          for attr in dynamic_props:
              attrs[attr] = getattr(obj, attr)
  
          if self.proxy_attrs is not None and attrs and codec:
              context = codec.context
  
              for k, v in attrs.copy().iteritems():
                  if k in self.proxy_attrs:
                      attrs[k] = context.getProxyForObject(v)
  
          if self.synonym_attrs:
              missing = object()
  
              for k, v in self.synonym_attrs.iteritems():
                  value = attrs.pop(k, missing)
  
                  if value is missing:
                      continue
  
                  attrs[v] = value
  
          return attrs