anchor.diff:      }
       if (min != null) return min;
       throw new InternalException("At least one argument must be passed.");
  +  }));
  +
  +  environment
  +      .setFunction(new BuiltInCallable("random", r"$limit: null", (arguments) {
  +    if (arguments[0] == sassNull) return new SassNumber(_random.nextDouble());
  +    var limit = arguments[0].assertNumber("limit").assertInt("limit");
  +    if (limit < 1) {
  +      throw new InternalException(
  +          "\$limit: Must be greater than 0, was $limit.");
  +    }
  +    return new SassNumber(_random.nextInt(limit + 1) + 1);
     }));
   
     // ## Introspection
  
positive.code:     var string = arguments[0].assertString("string");
      var start = arguments[1].assertNumber("start-at");
      var end = arguments[2].assertNumber("end-at");
      start.assertNoUnits();
      end.assertNoUnits();
  
      var lengthInCodepoints = string.text.runes.length;
      var startCodepoint =
  
negative.code: import 'value.dart';
  
  final _microsoftFilterStart = new RegExp(r'^[a-zA-Z]+\s*=');
  
  final _random = new math.Random();
  
  void defineCoreFunctions(Environment environment) {
    // ## RGB
  