func objTypeOf(goType reflect.Type) *ObjType {
	objType := &ObjType{
		method: make(map[string]*ObjMethod),
		goType: goType,
	}
	for i := 0; i < goType.NumMethod(); i++ {
		m := goType.Method(i)
		if m.PkgPath != "" {
			continue
		}
		if objm := newMethod(m, goType.Kind()); objm != nil {
			objType.method[m.Name] = objm
		} else {
			objType.discarded = append(objType.discarded, m.Name)
		}
	}
	return objType
}
// objTypeOf is like ObjTypeOf but without the cache.
// Called with objTypeMutex locked.
objTypeOf is like ObjTypeOf but without the cache.
Called with objTypeMutex locked.
// objTypeOf is like ObjTypeOf but without the cache . // Called with objTypeMutex locked .
func objTypeOf(goType reflect.Type) *ObjType {
	objType := &ObjType{
		method: make(map[string]*ObjMethod),
		goType: goType,
	}
	for i := 0; i < goType.NumMethod(); i++ {
		m := goType.Method(i)
		if m.PkgPath != "" {
			continue
		}
		if objm := newMethod(m, goType.Kind()); objm != nil {
			objType.method[m.Name] = objm
		} else {
			objType.discarded = append(objType.discarded, m.Name)
		}
	}
	return objType
}
func objTypeOf ( goType reflect . Type ) * ObjType { objType := & ObjType { method : make ( map [ string ] * ObjMethod ) , goType : goType , } for i := 0 ; i < goType . NumMethod ( ) ; i ++ { m := goType . Method ( i ) if m . PkgPath != " " { continue } if objm := newMethod ( m , goType . Kind ( ) ) ; objm != nil { objType . method [ m . Name ] = objm } else { objType . discarded = append ( objType . discarded , m . Name ) } } return objType }
objTypeOf is like ObjTypeOf but without the cache.
objTypeOf is like ObjTypeOf but without the cache .