hunk.code_window: 		s.Root.Metrics.ObserveStoreMethodDuration("ChannelStore.GetDeleted", success, elapsed)
   	}
   	return resultVar0, resultVar1
   }
   func (s *TimerLayerChannelStore) GetDeletedByName(team_id string, name string) (*model.Channel, *model.AppError) {
   	start := timemodule.Now()
   	resultVar0, resultVar1 := s.ChannelStore.GetDeletedByName(team_id, name)
   	elapsed := float64(timemodule.Since(start)) / float64(timemodule.Second)
  
hunk.labels: keep keep keep keep keep replace keep keep keep keep keep
hunk.after_edit: func (s *TimerLayerChannelStore) GetDeletedByName(team_id string, name string) (*model.Channel, error) {
  
hunk.file_path: store/timer_layer.go
hunk.type: replace
file: // Copyright 2016 The Go Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style
  // license that can be found in the LICENSE file.
  
  // +build appengine !linux,!darwin,!freebsd,!openbsd,!netbsd
  
  package fastwalk
  
  import (
  	"io/ioutil"
  	"os"
  )
  
  // readDir calls fn for each directory entry in dirName.
  // It does not descend into directories or follow symlinks.
  // If fn returns a non-nil error, readDir returns with that error
  // immediately.
  func readDir(dirName string, fn func(dirName, entName string, typ os.FileMode) error) error {
  	fis, err := ioutil.ReadDir(dirName)
  	if err != nil {
  		return err
  	}
  	skipFiles := false
  	for _, fi := range fis {
  		if fi.Mode().IsRegular() && skipFiles {
  			continue
  		}
  		if err := fn(dirName, fi.Name(), fi.Mode()&os.ModeType); err != nil {
  			if err == ErrSkipFiles {
  				skipFiles = true
  				continue
  			}
  			return err
  		}
  	}
  	return nil
  }
  