func containsMethod(m *st.FunctionSymbol, sym st.ITypeSymbol) (bool, *errors.GoRefactorError) { candidate, ok := sym.Methods().LookUp(m.Name(), "") if !ok { return false, nil } cand, ok := candidate.(*st.FunctionSymbol) if !ok { panic("non-method symbol " + candidate.Name() + " in type " + sym.Name() + " methods()") } if !st.EqualsMethods(cand, m) { return true, &errors.GoRefactorError{ErrorType: "implement interface error", Message: "type has a method, named " + cand.Name() + "but it has signature, different from the necessary one"} } return true, nil }