code: def domain(self, default):
          
          # Always compute our inferred domain to ensure that it's compatible
          # with our explicit domain.
          inferred = infer_domain(self._output_terms)
  
          if inferred is GENERIC and self._domain is GENERIC:
              # Both generic. Fall back to default.
              return default
          elif inferred is GENERIC and self._domain is not GENERIC:
              # Use the non-generic domain.
              return self._domain
          elif inferred is not GENERIC and self._domain is GENERIC:
              # Use the non-generic domain.
              return inferred
          else:
              # Both non-generic. They have to match.
              if inferred is not self._domain:
                  raise ValueError(
                      "Conflicting domains in Pipeline. Inferred {}, but {} was "
                      "passed at construction.".format(inferred, self._domain)
                  )
              return inferred
docs: Get the domain for this pipeline.
  
          - If an explicit domain was provided at construction time, use it.
          - Otherwise, infer a domain from the registered columns.
          - If no domain can be inferred, return ``default``.
  
          Parameters
          ----------
          default : zipline.pipeline.Domain
              Domain to use if no domain can be inferred from this pipeline by
              itself.
  
          Returns
          -------
          domain : zipline.pipeline.Domain
              The domain for the pipeline.
  
          Raises
          ------
          AmbiguousDomain
          ValueError
              If the terms in ``self`` conflict with self._domain.