code: function _residuePredicates(dict) {
    var predicates = [];
    if (dict.rname !== undefined) {
      predicates.push(function(r) { return r.name() === dict.rname; });
    }
    if (dict.rnames !== undefined) {
      predicates.push(function(r) { 
      var n = r.name();
      for (var k = 0; k < dict.rnames.length; ++k) {
        if (n === dict.rnames[k]) {
            return true;
          }
        }
        return false;
      });
    }
    if (dict.rnums !== undefined) {
      var num_set = {};
      for (var i = 0; i < dict.rnums.length; ++i) {
        num_set[dict.rnums[i]] = true;
      }
      predicates.push(function(r) {
        var n = r.num();
        return num_set[n] === true;
      });
    }
    if (dict.rnum !== undefined) {
      predicates.push(function(r) {
        return r.num() === dict.rnum;
      });
    }
    if (dict.rtype !== undefined) {
      predicates.push(function(r) {
        return r.ss() === dict.rtype;
      });
    }
    return predicates;
  }
docs: extracts the residue predicates from the dictionary. ignores rindices, rindexRange because they are handled separately.