code: func getType(args ...interface{}) (reflect.Type, error) {
  	var last interface{}
  	for _, next := range args {
  		// Skip nil values
  		if next == nil {
  			continue
  		}
  
  		// Set the first non-nil value we find and continue
  		if last == nil {
  			last = next
  			continue
  		}
  
  		// Verify the types of the values match
  		if reflect.TypeOf(last).Kind() != reflect.TypeOf(next).Kind() {
  			return nil, fmt.Errorf("missmatching non-nil types for the same field: %T %T", last, next)
  		}
  	}
  
  	return reflect.TypeOf(last), nil
  }
docs: // getType returns the type of the arguments.  If the arguments don't have matching
  // types, getType returns an error.  Nil types matching everything.