code: func (e *Env) AssertCompleteAndLoad() error {
  	if err := e.assertComplete(); err != nil {
  		return err
  	}
  
  	var environment vpython.Environment
  	if err := spec.LoadEnvironment(e.EnvironmentStampPath, &environment); err != nil {
  		return err
  	}
  	if err := spec.NormalizeEnvironment(&environment); err != nil {
  		return errors.Annotate(err, "failed to normalize stamp environment").Err()
  	}
  
  	// If we are configured with an environment, validate that it matches the
  	// the environment that we just loaded.
  	//
  	// We only consider our environment-defining fields (Spec and Runtime).
  	//
  	// Note that both environments will have been normalized at this point, so
  	// comparison should be reliable.
  	if e.Environment != nil {
  		if !proto.Equal(e.Environment.Spec, environment.Spec) {
  			return errors.New("environment stamp specification does not match")
  		}
  		if !proto.Equal(e.Environment.Runtime, environment.Runtime) {
  			return errors.New("environment stamp runtime does not match")
  		}
  	}
  	e.Environment = &environment
  	return nil
  }
docs: // AssertCompleteAndLoad asserts that the VirtualEnv's completion
  // flag exists. If it does, the environment's stamp is loaded into e.Environment
  // and nil is returned.
  //
  // An error is returned if the completion flag does not exist, or if the
  // VirtualEnv environment stamp could not be loaded.