docs: def dump(self):
          """ dump Swagger Spec in dict(which can be
          convert to JSON)
          """
          r = {}
          def _dump_(obj):
              if isinstance(obj, dict):
                  ret = {}
                  for k, v in six.iteritems(obj):
                      ret[k] = _dump_(v)
                  return None if ret == {} else ret
              elif isinstance(obj, list):
                  ret = []
                  for v in obj:
                      ret.append(_dump_(v))
                  return None if ret == [] else ret
              elif isinstance(obj, BaseObj):
                  return obj.dump()
              elif isinstance(obj, (six.string_types, six.integer_types)):
                  return obj
              elif isinstance(obj, float):
                  return obj
              else:
                  raise ValueError('Unknown object to dump: {0}'.format(obj.__class__.__name__))
  
          for name, default in six.iteritems(self.__swagger_fields__):
              # only dump a field when its value is not equal to default value
              v = getattr(self, name)
              if v != default:
                  d = _dump_(v)
                  if d != None:
                      r[name] = d
  
          return None if r == {} else r