code: def link(self):
          
          if self.linked:
              return self
  
          self.linked = True
  
          included_modules = []
  
          # Link includes
          for include in self.includes.values():
              included_modules.append(include.link().surface)
  
          self.scope.add_surface('__includes__', tuple(included_modules))
          self.scope.add_surface('__thrift_source__', self.thrift_source)
  
          # Link self
          for linker in LINKERS:
              linker(self.scope).link()
  
          self.scope.add_surface('loads', Deserializer(self.protocol))
          self.scope.add_surface('dumps', Serializer(self.protocol))
  
          return self
docs: Link all the types in this module and all included modules.