code: def predictions(self, stpid="", rt="", vid="", maxpredictions=""):
          
          
          if (stpid and vid) or (rt and vid):
              raise ValueError("These parameters cannot be specified simultaneously.")
          elif not (stpid or rt or vid):
              raise ValueError("You must specify a parameter.")   
          
          if listlike(stpid): stpid = ",".join(stpid)
          if listlike(rt): rt = ",".join(rt)
          if listlike(vid): vid = ",".join(vid)
                   
          if stpid or (rt and stpid) or vid:
              url = self.endpoint('PREDICTION', dict(rt=rt, stpid=stpid, vid=vid, top=maxpredictions))
              return self.response(url)
docs: Retrieve predictions for 1+ stops or 1+ vehicles.
          
          Arguments:
              `stpid`: unique ID number for bus stop (single or comma-seperated list or iterable)
              or
              `vid`: vehicle ID number (single or comma-seperated list or iterable)
              or
              `stpid` and `rt`
              
              `maxpredictions` (optional): limit number of predictions returned
  
          Response:
              `prd`: (prediction container) contains list of
                  `tmstp`: when prediction was generated
                  `typ`: prediction type ('A' = arrival, 'D' = departure)
                  `stpid`: stop ID for prediction
                  `stpnm`: stop name for prediction
                  `vid`: vehicle ID for prediction
                  `dstp`: vehicle distance to stop (feet)
                  `rt`: bus route
                  `des`: bus destination
                  `prdtm`: ETA/ETD
                  `dly`: True if bus delayed
                  `tablockid`, `tatripid`, `zone`: internal, see `self.vehicles`
                  
          http://realtime.portauthority.org/bustime/apidoc/v1/main.jsp?section=predictions.jsp