anchor.diff:  /**
    * parse the provided value and return a default value in case of a FormatException
    */
  -int parseInt(String s, {int radix: 10, int onErrorDefault : null}) {
  +int parseInt(dynamic s, {int radix: 10, int onErrorDefault : null}) {
     if(s == null) return onErrorDefault;
  +  if(s is int) return s;
  +  if(s is !String) return onErrorDefault;
     return int.parse(s, radix: radix, onError: (_) => onErrorDefault);
   }
   
  -double parseDouble(String s, {double onErrorDefault: null,
  +double parseDouble(dynamic s, {double onErrorDefault: null,
       bool acceptInfinity: false,
       bool acceptNegativeInfinity: false}) {
     if(s == null) return onErrorDefault;
  +  if(s is num && ((s != double.INFINITY || s == double.INFINITY && acceptInfinity) ||
  +                  (s != double.NEGATIVE_INFINITY || s == double.NEGATIVE_INFINITY && acceptNegativeInfinity))) {
  +    return s;
  +  } else {
  +    s = s.toString();
  +  }
  +  if(s is !String) return onErrorDefault;
   
     if(acceptInfinity && s.toLowerCase() == double.INFINITY.toString().toLowerCase()) {
       return double.INFINITY;
  
positive.code:   if(acceptNegativeInfinity && s.toLowerCase() == double.NEGATIVE_INFINITY.toString().toLowerCase()) {
      return double.NEGATIVE_INFINITY;
    }
  
    double result = double.parse(s, (_) => onErrorDefault);
  
  
negative.code:   return result;
  }
  
  num parseNum(dynamic s, {num onErrorDefault: null,
    bool acceptInfinity: false,
    bool acceptNegativeInfinity: false}) {
  
    if(s == null) return onErrorDefault;
    if(s is num && ((s != double.INFINITY || s == double.INFINITY && acceptInfinity) ||
                    (s != double.NEGATIVE_INFINITY || s == double.NEGATIVE_INFINITY && acceptNegativeInfinity))) {
      return s;
    } else {
      s = s.toString();
    }
    if(s is !String) return onErrorDefault;
  
    if(acceptInfinity && s.toLowerCase() == double.INFINITY.toString().toLowerCase()) {
      return double.INFINITY;
  