code: def _data(self, asa=None):
          
          if asa is not None:
              if self._store is None or self._hashes is None:
                  msg = (
                      "Can only use asa functions with built dataframes."
                      " Build this package and try again."
                  )
                  raise ValueError(msg)
              return asa(self, [self._store.object_path(obj) for obj in self._hashes])
          else:
              if self.__cached_data is None:
                  # TODO(dima): Temporary code.
                  if self._target() == TargetType.PANDAS:
                      self.__cached_data = self._store.load_dataframe(self._hashes)
                  elif self._target() == TargetType.NUMPY:
                      self.__cached_data = self._store.load_numpy(self._hashes)
                  else:
                      self.__cached_data = self._store.get_file(self._hashes)
              return self.__cached_data
docs: Returns the contents of the node: a dataframe or a file path, or passes
          the node and its contents to a callable.