anchor.diff:  import 'dart:math';
   
   /// A separator used to break the code into two parts to aid memorability.
  -const SEPARATOR = '+'; // 43 Ascii
  +const separator = '+'; // 43 Ascii
   
   /// The number of characters to place before the separator.
  -const SEPARATOR_POSITION = 8;
  +const separatorPosition = 8;
   
   /// The character used to pad codes.
  -const PADDING = '0'; // 48 in Ascii
  +const padding = '0'; // 48 in Ascii
   
   /// The character set used to encode the values.
  -const CODE_ALPHABET = '23456789CFGHJMPQRVWX';
  +const codeAlphabet = '23456789CFGHJMPQRVWX';
   
   /// The base to use to convert numbers to/from.
  -const ENCODING_BASE = CODE_ALPHABET.length;
  +const encodingBase = codeAlphabet.length;
   
   /// The maximum value for latitude in degrees.
  -const LATITUDE_MAX = 90;
  +const latitudeMax = 90;
   
   /// The maximum value for longitude in degrees.
  -const LONGITUDE_MAX = 180;
  +const longitudeMax = 180;
   
   /// Maximum code length using lat/lng pair encoding. The area of such a
   /// code is approximately 13x13 meters (at the equator), and should be suitable
   /// for identifying buildings. This excludes prefix and separator characters.
  -const PAIR_CODE_LENGTH = 10;
  +const pairCodeLength = 10;
   
   /// The resolution values in degrees for each position in the lat/lng pair
   /// encoding. These give the place value of each position, and therefore the
   /// dimensions of the resulting area.
  -const PAIR_RESOLUTIONS = const <double>[20.0, 1.0, .05, .0025, .000125];
  +const pairResolutions = const <double>[20.0, 1.0, .05, .0025, .000125];
   
   /// Number of columns in the grid refinement method.
  -const GRID_COLUMNS = 4;
  +const gridColumns = 4;
   
   /// Number of rows in the grid refinement method.
  -const GRID_ROWS = 5;
  +const gridRows = 5;
   
   /// Size of the initial grid in degrees.
  -const GRID_SIZE_DEGREES = 0.000125;
  +const gridSizeDegrees = 0.000125;
   
   /// Minimum length of a code that can be shortened.
  -const MIN_TRIMMABLE_CODE_LEN = 6;
  +const minTrimmableCodeLen = 6;
   
   /// Decoder lookup table.
   ///
  
positive.code:   var longitude = decodePairsSequence(code, 1);
    // Correct the values and set them into the CodeArea object.
    return new CodeArea(
        new LatLng(latitude[0] - LATITUDE_MAX, longitude[0] - LONGITUDE_MAX),
        new LatLng(latitude[1] - LATITUDE_MAX, longitude[1] - LONGITUDE_MAX),
        code.length);
  }
  
  
negative.code: String encodePairs(num latitude, num longitude, int codeLength) {
    var code = '';
    // Adjust latitude and longitude so they fall into positive ranges.
    var adjustedLatitude = latitude + latitudeMax;
    var adjustedLongitude = longitude + longitudeMax;
    // Count digits - can't use string length because it may include a separator
    // character.
    var digitCount = 0;
    while (digitCount < codeLength) {
      // Provides the value of digits in this place in decimal degrees.
      var placeValue = pairResolutions[digitCount ~/ 2];
      // Do the latitude - gets the digit for this place and subtracts that for
      // the next digit.
      var digitValue = adjustedLatitude ~/ placeValue;
      adjustedLatitude -= digitValue * placeValue;
      code += codeAlphabet[digitValue];
      digitCount++;
      // And do the longitude - gets the digit for this place and subtracts that
      // for the next digit.
      digitValue = adjustedLongitude ~/ placeValue;
      adjustedLongitude -= digitValue * placeValue;
      code += codeAlphabet[digitValue];
      digitCount++;
      // Should we add a separator here?
      if (digitCount == separatorPosition && digitCount < codeLength) {
        code += separator;
      }
    }
    // If necessary, Add padding.
    if (code.length < separatorPosition) {
      code = code + (padding * (separatorPosition - code.length));
    }
    if (code.length == separatorPosition) {
      code = code + separator;
    }
    return code;
  }
  