func (slice employerSlice) TakeWhile(functors ...employerFunctorForFilter) employerSlice {
	tmpSlice := slice
	for _, f := range functors {
		if f == nil {
			continue
		}
		tmpSlice = TakeWhileEmployer(f, tmpSlice)
	}
	return tmpSlice
}
TakeWhile  - Returns a new list based on predicate function. It returns new list once condition fails.
package gfp
import _ "reflect" 
import "sync" 
import "github.com/logic-building/functional-go/fp" 
import "github.com/logic-building/functional-go/internal/employee" 
import "github.com/logic-building/functional-go/internal/employer" 
func MapEmployer(f func(employer.Employer) employer.Employer, list []employer.Employer) []employer.Employer {
	if f == nil {
		return []employer.Employer{}
	}
	newList := make([]employer.Employer, len(list))
	for i, v := range list {
		newList[i] = f(v)
	}
	return newList
}
func MapEmployerPtr(f func(*employer.Employer) *employer.Employer, list []*employer.Employer) []*employer.Employer {
	if f == nil {
		return []*employer.Employer{}
	}
	newList := make([]*employer.Employer, len(list))
	for i, v := range list {
		newList[i] = f(v)
	}
	return newList
}
func MapEmployerPtrErr(f func(*employer.Employer) (*employer.Employer, error), list []*employer.Employer) ([]*employer.Employer, error) {
	if f == nil {
		return []*employer.Employer{}, nil
	}
	newList := make([]*employer.Employer, len(list))
	for i, v := range list {
		var err error
		newList[i], err = f(v)
		if err != nil {
			return nil, err
		}
	}
	return newList, nil
}
func MapEmployerErr(f func(employer.Employer) (employer.Employer, error), list []employer.Employer) ([]employer.Employer, error) {
	if f == nil {
		return []employer.Employer{}, nil
	}
	newList := make([]employer.Employer, len(list))
	for i, v := range list {
		var err error
		newList[i], err = f(v)
		if err != nil {
			return nil, err
		}
	}
	return newList, nil
}
func FilterEmployer(f func(employer.Employer) bool, list []employer.Employer) []employer.Employer {
	if f == nil {
		return []employer.Employer{}
	}
	var newList []employer.Employer
	for _, v := range list {
		if f(v) {
			newList = append(newList, v)
		}
	}
	return newList
}
func FilterEmployerPtr(f func(*employer.Employer) bool, list []*employer.Employer) []*employer.Employer {
	if f == nil {
		return []*employer.Employer{}
	}
	var newList []*employer.Employer
	for _, v := range list {
		if f(v) {
			newList = append(newList, v)
		}
	}
	return newList
}
func FilterEmployerPtrErr(f func(*employer.Employer) (bool, error), list []*employer.Employer) ([]*employer.Employer, error) {
	if f == nil {
		return []*employer.Employer{}, nil
	}
	var newList []*employer.Employer
	for _, v := range list {
		r, err := f(v)
		if err != nil {
			return nil, err
		}
		if r {
			newList = append(newList, v)
		}
	}
	return newList, nil
}
func FilterEmployerErr(f func(employer.Employer) (bool, error), list []employer.Employer) ([]employer.Employer, error) {
	if f == nil {
		return []employer.Employer{}, nil
	}
	var newList []employer.Employer
	for _, v := range list {
		r, err := f(v)
		if err != nil {
			return nil, err
		}
		if r {
			newList = append(newList, v)
		}
	}
	return newList, nil
}
func RemoveEmployer(f func(employer.Employer) bool, list []employer.Employer) []employer.Employer {
	if f == nil {
		return []employer.Employer{}
	}
	var newList []employer.Employer
	for _, v := range list {
		if !f(v) {
			newList = append(newList, v)
		}
	}
	return newList
}
func RemoveEmployerPtr(f func(*employer.Employer) bool, list []*employer.Employer) []*employer.Employer {
	if f == nil {
		return []*employer.Employer{}
	}
	var newList []*employer.Employer
	for _, v := range list {
		if !f(v) {
			newList = append(newList, v)
		}
	}
	return newList
}
func RemoveEmployerPtrErr(f func(*employer.Employer) (bool, error), list []*employer.Employer) ([]*employer.Employer, error) {
	if f == nil {
		return []*employer.Employer{}, nil
	}
	var newList []*employer.Employer
	for _, v := range list {
		r, err := f(v)
		if err != nil {
			return nil, err
		}
		if !r {
			newList = append(newList, v)
		}
	}
	return newList, nil
}
func RemoveEmployerErr(f func(employer.Employer) (bool, error), list []employer.Employer) ([]employer.Employer, error) {
	if f == nil {
		return []employer.Employer{}, nil
	}
	var newList []employer.Employer
	for _, v := range list {
		r, err := f(v)
		if err != nil {
			return nil, err
		}
		if !r {
			newList = append(newList, v)
		}
	}
	return newList, nil
}
func SomeEmployer(f func(employer.Employer) bool, list []employer.Employer) bool {
	if f == nil {
		return false
	}
	for _, v := range list {
		if f(v) {
			return true
		}
	}
	return false
}
func SomeEmployerPtr(f func(*employer.Employer) bool, list []*employer.Employer) bool {
	if f == nil {
		return false
	}
	for _, v := range list {
		if f(v) {
			return true
		}
	}
	return false
}
func SomeEmployerPtrErr(f func(*employer.Employer) (bool, error), list []*employer.Employer) (bool, error) {
	if f == nil {
		return false, nil
	}
	for _, v := range list {
		r, err := f(v)
		if err != nil {
			return false, err
		}
		if r {
			return true, nil
		}
	}
	return false, nil
}
func SomeEmployerErr(f func(employer.Employer) (bool, error), list []employer.Employer) (bool, error) {
	if f == nil {
		return false, nil
	}
	for _, v := range list {
		r, err := f(v)
		if err != nil {
			return false, err
		}
		if r {
			return true, nil
		}
	}
	return false, nil
}
func EveryEmployer(f func(employer.Employer) bool, list []employer.Employer) bool {
	if f == nil || len(list) == 0 {
		return false
	}
	for _, v := range list {
		if !f(v) {
			return false
		}
	}
	return true
}
func EveryEmployerPtr(f func(*employer.Employer) bool, list []*employer.Employer) bool {
	if f == nil || len(list) == 0 {
		return false
	}
	for _, v := range list {
		if !f(v) {
			return false
		}
	}
	return true
}
func EveryEmployerPtrErr(f func(*employer.Employer) (bool, error), list []*employer.Employer) (bool, error) {
	if f == nil || len(list) == 0 {
		return false, nil
	}
	for _, v := range list {
		r, err := f(v)
		if err != nil {
			return false, err
		}
		if !r {
			return false, nil
		}
	}
	return true, nil
}
func EveryEmployerErr(f func(employer.Employer) (bool, error), list []employer.Employer) (bool, error) {
	if f == nil || len(list) == 0 {
		return false, nil
	}
	for _, v := range list {
		r, err := f(v)
		if err != nil {
			return false, err
		}
		if !r {
			return false, nil
		}
	}
	return true, nil
}
func DropWhileEmployer(f func(employer.Employer) bool, list []employer.Employer) []employer.Employer {
	if f == nil {
		return []employer.Employer{}
	}
	var newList []employer.Employer
	for i, v := range list {
		if !f(v) {
			listLen := len(list)
			newList = make([]employer.Employer, listLen-i)
			j := 0
			for i < listLen {
				newList[j] = list[i]
				i++
				j++
			}
			return newList
		}
	}
	return newList
}
func DropWhileEmployerPtr(f func(*employer.Employer) bool, list []*employer.Employer) []*employer.Employer {
	if f == nil {
		return []*employer.Employer{}
	}
	var newList []*employer.Employer
	for i, v := range list {
		if !f(v) {
			listLen := len(list)
			newList = make([]*employer.Employer, listLen-i)
			j := 0
			for i < listLen {
				newList[j] = list[i]
				i++
				j++
			}
			return newList
		}
	}
	return newList
}
func DropWhileEmployerPtrErr(f func(*employer.Employer) (bool, error), list []*employer.Employer) ([]*employer.Employer, error) {
	if f == nil {
		return []*employer.Employer{}, nil
	}
	var newList []*employer.Employer
	for i, v := range list {
		r, err := f(v)
		if err != nil {
			return nil, err
		}
		if !r {
			listLen := len(list)
			newList = make([]*employer.Employer, listLen-i)
			j := 0
			for i < listLen {
				newList[j] = list[i]
				i++
				j++
			}
			return newList, nil
		}
	}
	return newList, nil
}
func DropWhileEmployerErr(f func(employer.Employer) (bool, error), list []employer.Employer) ([]employer.Employer, error) {
	if f == nil {
		return []employer.Employer{}, nil
	}
	var newList []employer.Employer
	for i, v := range list {
		r, err := f(v)
		if err != nil {
			return nil, err
		}
		if !r {
			listLen := len(list)
			newList = make([]employer.Employer, listLen-i)
			j := 0
			for i < listLen {
				newList[j] = list[i]
				i++
				j++
			}
			return newList, nil
		}
	}
	return newList, nil
}
func TakeWhileEmployer(f func(employer.Employer) bool, list []employer.Employer) []employer.Employer {
	if f == nil {
		return []employer.Employer{}
	}
	var newList []employer.Employer
	for _, v := range list {
		if !f(v) {
			return newList
		}
		newList = append(newList, v)
	}
	return newList
}