code: function getValues(cmd, args) {
    var step = 0
      , values = []
      , val
      , i = 0;
  
    switch(cmd) {
      // accept single field argument at position 1
      case Constants.MAP.hexists.name:
      case Constants.MAP.hget.name:
      case Constants.MAP.hset.name:
      case Constants.MAP.hsetnx.name:
      case Constants.MAP.hincrby.name:
      case Constants.MAP.hincrbyfloat.name:
        return [this.getKey(args[1])];
      // single step from position 1
      case Constants.MAP.hdel.name:
      case Constants.MAP.hmget.name:
        step = 1;
        break;
      // multiple step from position 1
      case Constants.MAP.hmset.name:
        step = 2;
        break;
    }
  
    if(step === 0) return values;
  
    // return list of value for varargs
    for(;i < args.length;i += step) {
      val = this.getKey(args[i]);
      values.push(val);
    }
    return values;
  }
docs: Attempts to find a value (or list of values) from a given command,
  arguments list and command definition.
  
  The values returned are the existing values for the keys in the hash map
  not the values present in the arguments list.
  
  This is used by the validation logic to validate underlying values are
  numeric when necessary.
  
  @param cmd The command name.
  @param args The arguments list for the command.