code: function( hue_c, variance ){
              if( is.Hue(hue_c) ){
                  return TColor.newHSVA(
                      hue_c.getHue(),
                      pickRandom(this.saturationConstraint).pickRandom(),
                      pickRandom(this.brightnessConstraint).pickRandom(),
                      pickRandom(this.alphaConstraint).pickRandom()
                  );
              }
              //must be a TColor
              var c = hue_c, h, s, b, a;
              if( c ){
                  if( c.isBlack() ){
                      return TColor.newHSVA(c.hue(), 0, this.black.pickRandom(), c.alpha() );
                  } else if( c.isWhite() ){
                      return TColor.newHSVA(c.hue(), 0, this.white.pickRandom(), c.alpha() );
                  }
                  if( c.isGrey() ){
                      return TColor.newHSVA(
                          c.hue(),
                          0,
                          MathUtils.flipCoin() ? this.black.pickRandom() : this.white.pickRandom(),
                          c.alpha()
                      );
                  }
                  h = c.hue() + variance * MathUtils.normalizedRandom();
                  a = c.alpha();
              } else {
                  h = pickRandom(this.hueConstraint).pickRandom();
                  a = pickRandom(this.alphaConstraint).pickRandom();
              }
              s = pickRandom(this.saturationConstraint).pickRandom();
              b = pickRandom(this.brightnessConstraint).pickRandom();
              return TColor.newHSVA(h,s,b,a);
          }
docs: creates a new shade of the given parameter based on the other constraints
  of the range. This function has many param options:
  1. no params
  2.
  @param {toxi.color.Hue} hue
  3.
  @param {toxi.color.TColor} c
  @param {Number} variance