code: func Base(compiler *ast.Compiler, x interface{}) ([]ast.Ref, error) {
  	baseRefs, err := base(compiler, x)
  	if err != nil {
  		return nil, err
  	}
  
  	return dedup(baseRefs), nil
  }
docs: // Base returns the list of base data documents that the given AST element depends on.
  //
  // The returned refs are always constant and are truncated at any point where they become
  // dynamic. That is, a ref like data.a.b[x] will be truncated to data.a.b.