code: func LoadPath(abiFileOrDirs ...string) (*AbiSpec, error) {
  	if len(abiFileOrDirs) == 0 {
  		return &AbiSpec{}, fmt.Errorf("no ABI file or directory provided")
  	}
  
  	specs := make([]*AbiSpec, 0)
  
  	for _, dir := range abiFileOrDirs {
  		err := filepath.Walk(dir, func(path string, fi os.FileInfo, err error) error {
  			if err != nil {
  				return fmt.Errorf("error returned while walking abiDir '%s': %v", dir, err)
  			}
  			ext := filepath.Ext(path)
  			if fi.IsDir() || !(ext == ".bin" || ext == ".abi") {
  				return nil
  			}
  			if err == nil {
  				abiSpc, err := ReadAbiSpecFile(path)
  				if err != nil {
  					return errors.Wrap(err, "Error parsing abi file "+path)
  				}
  				specs = append(specs, abiSpc)
  			}
  			return nil
  		})
  		if err != nil {
  			return &AbiSpec{}, err
  		}
  	}
  	return MergeAbiSpec(specs), nil
  }
docs: // LoadPath loads one abi file or finds all files in a directory