Enabled PointerBindsToType in clang-format options.
diff --git a/include/json/assertions.h b/include/json/assertions.h
index d5d5ff4..5ef7e7b 100644
--- a/include/json/assertions.h
+++ b/include/json/assertions.h
@@ -26,8 +26,8 @@
 // afterward in order to tell the compiler that this macro doesn't return.
 #define JSON_FAIL_MESSAGE(message)                                             \
   {                                                                            \
-    assert(false &&message);                                                   \
-    strcpy(reinterpret_cast<char *>(666), message);                            \
+    assert(false&& message);                                                   \
+    strcpy(reinterpret_cast<char*>(666), message);                             \
     exit(123);                                                                 \
   }
 
diff --git a/include/json/reader.h b/include/json/reader.h
index af8e13c..e99dbc0 100644
--- a/include/json/reader.h
+++ b/include/json/reader.h
@@ -31,7 +31,7 @@
 class JSON_API Reader {
 public:
   typedef char Char;
-  typedef const Char *Location;
+  typedef const Char* Location;
 
   /** \brief An error tagged with where in the JSON text it was encountered.
    *
@@ -53,7 +53,7 @@
   /** \brief Constructs a Reader allowing the specified feature set
    * for parsing.
    */
-  Reader(const Features &features);
+  Reader(const Features& features);
 
   /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
    * document.
@@ -70,7 +70,7 @@
    * error occurred.
    */
   bool
-  parse(const std::string &document, Value &root, bool collectComments = true);
+  parse(const std::string& document, Value& root, bool collectComments = true);
 
   /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
    document.
@@ -90,14 +90,14 @@
    * \return \c true if the document was successfully parsed, \c false if an
    error occurred.
    */
-  bool parse(const char *beginDoc,
-             const char *endDoc,
-             Value &root,
+  bool parse(const char* beginDoc,
+             const char* endDoc,
+             Value& root,
              bool collectComments = true);
 
   /// \brief Parse from input stream.
   /// \see Json::operator>>(std::istream&, Json::Value&).
-  bool parse(std::istream &is, Value &root, bool collectComments = true);
+  bool parse(std::istream& is, Value& root, bool collectComments = true);
 
   /** \brief Returns a user friendly string that list errors in the parsed
    * document.
@@ -164,8 +164,8 @@
 
   typedef std::deque<ErrorInfo> Errors;
 
-  bool expectToken(TokenType type, Token &token, const char *message);
-  bool readToken(Token &token);
+  bool expectToken(TokenType type, Token& token, const char* message);
+  bool readToken(Token& token);
   void skipSpaces();
   bool match(Location pattern, int patternLength);
   bool readComment();
@@ -174,37 +174,37 @@
   bool readString();
   void readNumber();
   bool readValue();
-  bool readObject(Token &token);
-  bool readArray(Token &token);
-  bool decodeNumber(Token &token);
-  bool decodeNumber(Token &token, Value &decoded);
-  bool decodeString(Token &token);
-  bool decodeString(Token &token, std::string &decoded);
-  bool decodeDouble(Token &token);
-  bool decodeDouble(Token &token, Value &decoded);
-  bool decodeUnicodeCodePoint(Token &token,
-                              Location &current,
+  bool readObject(Token& token);
+  bool readArray(Token& token);
+  bool decodeNumber(Token& token);
+  bool decodeNumber(Token& token, Value& decoded);
+  bool decodeString(Token& token);
+  bool decodeString(Token& token, std::string& decoded);
+  bool decodeDouble(Token& token);
+  bool decodeDouble(Token& token, Value& decoded);
+  bool decodeUnicodeCodePoint(Token& token,
+                              Location& current,
                               Location end,
-                              unsigned int &unicode);
-  bool decodeUnicodeEscapeSequence(Token &token,
-                                   Location &current,
+                              unsigned int& unicode);
+  bool decodeUnicodeEscapeSequence(Token& token,
+                                   Location& current,
                                    Location end,
-                                   unsigned int &unicode);
-  bool addError(const std::string &message, Token &token, Location extra = 0);
+                                   unsigned int& unicode);
+  bool addError(const std::string& message, Token& token, Location extra = 0);
   bool recoverFromError(TokenType skipUntilToken);
-  bool addErrorAndRecover(const std::string &message,
-                          Token &token,
+  bool addErrorAndRecover(const std::string& message,
+                          Token& token,
                           TokenType skipUntilToken);
   void skipUntilSpace();
-  Value &currentValue();
+  Value& currentValue();
   Char getNextChar();
   void
-  getLocationLineAndColumn(Location location, int &line, int &column) const;
+  getLocationLineAndColumn(Location location, int& line, int& column) const;
   std::string getLocationLineAndColumn(Location location) const;
   void addComment(Location begin, Location end, CommentPlacement placement);
-  void skipCommentTokens(Token &token);
+  void skipCommentTokens(Token& token);
 
-  typedef std::stack<Value *> Nodes;
+  typedef std::stack<Value*> Nodes;
   Nodes nodes_;
   Errors errors_;
   std::string document_;
@@ -212,7 +212,7 @@
   Location end_;
   Location current_;
   Location lastValueEnd_;
-  Value *lastValue_;
+  Value* lastValue_;
   std::string commentsBefore_;
   Features features_;
   bool collectComments_;
@@ -242,7 +242,7 @@
  \throw std::exception on parse error.
  \see Json::operator<<()
 */
-JSON_API std::istream &operator>>(std::istream &, Value &);
+JSON_API std::istream& operator>>(std::istream&, Value&);
 
 } // namespace Json
 
diff --git a/include/json/value.h b/include/json/value.h
index 7ff76d4..a60ca8f 100644
--- a/include/json/value.h
+++ b/include/json/value.h
@@ -74,14 +74,14 @@
  */
 class JSON_API StaticString {
 public:
-  explicit StaticString(const char *czstring) : str_(czstring) {}
+  explicit StaticString(const char* czstring) : str_(czstring) {}
 
-  operator const char *() const { return str_; }
+  operator const char*() const { return str_; }
 
-  const char *c_str() const { return str_; }
+  const char* c_str() const { return str_; }
 
 private:
-  const char *str_;
+  const char* str_;
 };
 
 /** \brief Represents a <a HREF="http://www.json.org">JSON</a> value.
@@ -133,7 +133,7 @@
   typedef Json::LargestUInt LargestUInt;
   typedef Json::ArrayIndex ArrayIndex;
 
-  static const Value &null;
+  static const Value& null;
   /// Minimum signed integer value that can be stored in a Json::Value.
   static const LargestInt minLargestInt;
   /// Maximum signed integer value that can be stored in a Json::Value.
@@ -168,19 +168,19 @@
       duplicateOnCopy
     };
     CZString(ArrayIndex index);
-    CZString(const char *cstr, DuplicationPolicy allocate);
-    CZString(const CZString &other);
+    CZString(const char* cstr, DuplicationPolicy allocate);
+    CZString(const CZString& other);
     ~CZString();
-    CZString &operator=(CZString other);
-    bool operator<(const CZString &other) const;
-    bool operator==(const CZString &other) const;
+    CZString& operator=(CZString other);
+    bool operator<(const CZString& other) const;
+    bool operator==(const CZString& other) const;
     ArrayIndex index() const;
-    const char *c_str() const;
+    const char* c_str() const;
     bool isStaticString() const;
 
   private:
-    void swap(CZString &other);
-    const char *cstr_;
+    void swap(CZString& other);
+    const char* cstr_;
     ArrayIndex index_;
   };
 
@@ -217,8 +217,8 @@
   Value(UInt64 value);
 #endif // if defined(JSON_HAS_INT64)
   Value(double value);
-  Value(const char *value);
-  Value(const char *beginValue, const char *endValue);
+  Value(const char* value);
+  Value(const char* beginValue, const char* endValue);
   /** \brief Constructs a value from a static string.
 
    * Like other value string constructor but do not duplicate the string for
@@ -229,34 +229,34 @@
    * Json::Value aValue( StaticString("some text") );
    * \endcode
    */
-  Value(const StaticString &value);
-  Value(const std::string &value);
+  Value(const StaticString& value);
+  Value(const std::string& value);
 #ifdef JSON_USE_CPPTL
-  Value(const CppTL::ConstString &value);
+  Value(const CppTL::ConstString& value);
 #endif
   Value(bool value);
-  Value(const Value &other);
+  Value(const Value& other);
   ~Value();
 
-  Value &operator=(Value other);
+  Value& operator=(Value other);
   /// Swap values.
   /// \note Currently, comments are intentionally not swapped, for
   /// both logic and efficiency.
-  void swap(Value &other);
+  void swap(Value& other);
 
   ValueType type() const;
 
-  bool operator<(const Value &other) const;
-  bool operator<=(const Value &other) const;
-  bool operator>=(const Value &other) const;
-  bool operator>(const Value &other) const;
+  bool operator<(const Value& other) const;
+  bool operator<=(const Value& other) const;
+  bool operator>=(const Value& other) const;
+  bool operator>(const Value& other) const;
 
-  bool operator==(const Value &other) const;
-  bool operator!=(const Value &other) const;
+  bool operator==(const Value& other) const;
+  bool operator!=(const Value& other) const;
 
-  int compare(const Value &other) const;
+  int compare(const Value& other) const;
 
-  const char *asCString() const;
+  const char* asCString() const;
   std::string asString() const;
 #ifdef JSON_USE_CPPTL
   CppTL::ConstString asConstString() const;
@@ -316,7 +316,7 @@
   /// in the array so that its size is index+1.
   /// (You may need to say 'value[0u]' to get your compiler to distinguish
   ///  this from the operator[] which takes a string.)
-  Value &operator[](ArrayIndex index);
+  Value& operator[](ArrayIndex index);
 
   /// Access an array element (zero based index ).
   /// If the array contains less than index element, then null value are
@@ -324,39 +324,39 @@
   /// in the array so that its size is index+1.
   /// (You may need to say 'value[0u]' to get your compiler to distinguish
   ///  this from the operator[] which takes a string.)
-  Value &operator[](int index);
+  Value& operator[](int index);
 
   /// Access an array element (zero based index )
   /// (You may need to say 'value[0u]' to get your compiler to distinguish
   ///  this from the operator[] which takes a string.)
-  const Value &operator[](ArrayIndex index) const;
+  const Value& operator[](ArrayIndex index) const;
 
   /// Access an array element (zero based index )
   /// (You may need to say 'value[0u]' to get your compiler to distinguish
   ///  this from the operator[] which takes a string.)
-  const Value &operator[](int index) const;
+  const Value& operator[](int index) const;
 
   /// If the array contains at least index+1 elements, returns the element
   /// value,
   /// otherwise returns defaultValue.
-  Value get(ArrayIndex index, const Value &defaultValue) const;
+  Value get(ArrayIndex index, const Value& defaultValue) const;
   /// Return true if index < size().
   bool isValidIndex(ArrayIndex index) const;
   /// \brief Append value to array at the end.
   ///
   /// Equivalent to jsonvalue[jsonvalue.size()] = value;
-  Value &append(const Value &value);
+  Value& append(const Value& value);
 
   /// Access an object value by name, create a null member if it does not exist.
-  Value &operator[](const char *key);
+  Value& operator[](const char* key);
   /// Access an object value by name, returns null if there is no member with
   /// that name.
-  const Value &operator[](const char *key) const;
+  const Value& operator[](const char* key) const;
   /// Access an object value by name, create a null member if it does not exist.
-  Value &operator[](const std::string &key);
+  Value& operator[](const std::string& key);
   /// Access an object value by name, returns null if there is no member with
   /// that name.
-  const Value &operator[](const std::string &key) const;
+  const Value& operator[](const std::string& key) const;
   /** \brief Access an object value by name, create a null member if it does not
    exist.
 
@@ -369,21 +369,21 @@
    * object[code] = 1234;
    * \endcode
    */
-  Value &operator[](const StaticString &key);
+  Value& operator[](const StaticString& key);
 #ifdef JSON_USE_CPPTL
   /// Access an object value by name, create a null member if it does not exist.
-  Value &operator[](const CppTL::ConstString &key);
+  Value& operator[](const CppTL::ConstString& key);
   /// Access an object value by name, returns null if there is no member with
   /// that name.
-  const Value &operator[](const CppTL::ConstString &key) const;
+  const Value& operator[](const CppTL::ConstString& key) const;
 #endif
   /// Return the member named key if it exist, defaultValue otherwise.
-  Value get(const char *key, const Value &defaultValue) const;
+  Value get(const char* key, const Value& defaultValue) const;
   /// Return the member named key if it exist, defaultValue otherwise.
-  Value get(const std::string &key, const Value &defaultValue) const;
+  Value get(const std::string& key, const Value& defaultValue) const;
 #ifdef JSON_USE_CPPTL
   /// Return the member named key if it exist, defaultValue otherwise.
-  Value get(const CppTL::ConstString &key, const Value &defaultValue) const;
+  Value get(const CppTL::ConstString& key, const Value& defaultValue) const;
 #endif
   /// \brief Remove and return the named member.
   ///
@@ -391,17 +391,17 @@
   /// \return the removed Value, or null.
   /// \pre type() is objectValue or nullValue
   /// \post type() is unchanged
-  Value removeMember(const char *key);
+  Value removeMember(const char* key);
   /// Same as removeMember(const char*)
-  Value removeMember(const std::string &key);
+  Value removeMember(const std::string& key);
 
   /// Return true if the object has a member named key.
-  bool isMember(const char *key) const;
+  bool isMember(const char* key) const;
   /// Return true if the object has a member named key.
-  bool isMember(const std::string &key) const;
+  bool isMember(const std::string& key) const;
 #ifdef JSON_USE_CPPTL
   /// Return true if the object has a member named key.
-  bool isMember(const CppTL::ConstString &key) const;
+  bool isMember(const CppTL::ConstString& key) const;
 #endif
 
   /// \brief Return a list of the member names.
@@ -417,9 +417,9 @@
   //# endif
 
   /// Comments must be //... or /* ... */
-  void setComment(const char *comment, CommentPlacement placement);
+  void setComment(const char* comment, CommentPlacement placement);
   /// Comments must be //... or /* ... */
-  void setComment(const std::string &comment, CommentPlacement placement);
+  void setComment(const std::string& comment, CommentPlacement placement);
   bool hasComment(CommentPlacement placement) const;
   /// Include delimiters and embedded newlines.
   std::string getComment(CommentPlacement placement) const;
@@ -440,7 +440,7 @@
   size_t getOffsetLimit() const;
 
 private:
-  Value &resolveReference(const char *key, bool isStatic);
+  Value& resolveReference(const char* key, bool isStatic);
 
 #ifdef JSON_VALUE_USE_INTERNAL_MAP
   inline bool isItemAvailable() const { return itemIsUsed_ == 0; }
@@ -459,9 +459,9 @@
     CommentInfo();
     ~CommentInfo();
 
-    void setComment(const char *text);
+    void setComment(const char* text);
 
-    char *comment_;
+    char* comment_;
   };
 
   // struct MemberNamesTransform
@@ -478,12 +478,12 @@
     LargestUInt uint_;
     double real_;
     bool bool_;
-    char *string_;
+    char* string_;
 #ifdef JSON_VALUE_USE_INTERNAL_MAP
-    ValueInternalArray *array_;
-    ValueInternalMap *map_;
+    ValueInternalArray* array_;
+    ValueInternalMap* map_;
 #else
-    ObjectValues *map_;
+    ObjectValues* map_;
 #endif
   } value_;
   ValueType type_ : 8;
@@ -492,7 +492,7 @@
   unsigned int itemIsUsed_ : 1; // used by the ValueInternalMap container.
   int memberNameIsStatic_ : 1;  // used by the ValueInternalMap container.
 #endif
-  CommentInfo *comments_;
+  CommentInfo* comments_;
 
   // [start, limit) byte offsets in the source JSON text from which this Value
   // was extracted.
@@ -509,8 +509,8 @@
 
   PathArgument();
   PathArgument(ArrayIndex index);
-  PathArgument(const char *key);
-  PathArgument(const std::string &key);
+  PathArgument(const char* key);
+  PathArgument(const std::string& key);
 
 private:
   enum Kind {
@@ -536,29 +536,29 @@
  */
 class JSON_API Path {
 public:
-  Path(const std::string &path,
-       const PathArgument &a1 = PathArgument(),
-       const PathArgument &a2 = PathArgument(),
-       const PathArgument &a3 = PathArgument(),
-       const PathArgument &a4 = PathArgument(),
-       const PathArgument &a5 = PathArgument());
+  Path(const std::string& path,
+       const PathArgument& a1 = PathArgument(),
+       const PathArgument& a2 = PathArgument(),
+       const PathArgument& a3 = PathArgument(),
+       const PathArgument& a4 = PathArgument(),
+       const PathArgument& a5 = PathArgument());
 
-  const Value &resolve(const Value &root) const;
-  Value resolve(const Value &root, const Value &defaultValue) const;
+  const Value& resolve(const Value& root) const;
+  Value resolve(const Value& root, const Value& defaultValue) const;
   /// Creates the "path" to access the specified node and returns a reference on
   /// the node.
-  Value &make(Value &root) const;
+  Value& make(Value& root) const;
 
 private:
-  typedef std::vector<const PathArgument *> InArgs;
+  typedef std::vector<const PathArgument*> InArgs;
   typedef std::vector<PathArgument> Args;
 
-  void makePath(const std::string &path, const InArgs &in);
-  void addPathInArg(const std::string &path,
-                    const InArgs &in,
-                    InArgs::const_iterator &itInArg,
+  void makePath(const std::string& path, const InArgs& in);
+  void addPathInArg(const std::string& path,
+                    const InArgs& in,
+                    InArgs::const_iterator& itInArg,
                     PathArgument::Kind kind);
-  void invalidPath(const std::string &path, int location);
+  void invalidPath(const std::string& path, int location);
 
   Args args_;
 };
@@ -612,13 +612,13 @@
 class JSON_API ValueMapAllocator {
 public:
   virtual ~ValueMapAllocator();
-  virtual ValueInternalMap *newMap() = 0;
-  virtual ValueInternalMap *newMapCopy(const ValueInternalMap &other) = 0;
-  virtual void destructMap(ValueInternalMap *map) = 0;
-  virtual ValueInternalLink *allocateMapBuckets(unsigned int size) = 0;
-  virtual void releaseMapBuckets(ValueInternalLink *links) = 0;
-  virtual ValueInternalLink *allocateMapLink() = 0;
-  virtual void releaseMapLink(ValueInternalLink *link) = 0;
+  virtual ValueInternalMap* newMap() = 0;
+  virtual ValueInternalMap* newMapCopy(const ValueInternalMap& other) = 0;
+  virtual void destructMap(ValueInternalMap* map) = 0;
+  virtual ValueInternalLink* allocateMapBuckets(unsigned int size) = 0;
+  virtual void releaseMapBuckets(ValueInternalLink* links) = 0;
+  virtual ValueInternalLink* allocateMapLink() = 0;
+  virtual void releaseMapLink(ValueInternalLink* link) = 0;
 };
 
 /** \brief ValueInternalMap hash-map bucket chain link (for internal use only).
@@ -639,9 +639,9 @@
   ~ValueInternalLink();
 
   Value items_[itemPerLink];
-  char *keys_[itemPerLink];
-  ValueInternalLink *previous_;
-  ValueInternalLink *next_;
+  char* keys_[itemPerLink];
+  ValueInternalLink* previous_;
+  ValueInternalLink* next_;
 };
 
 /** \brief A linked page based hash-table implementation used internally by
@@ -672,19 +672,19 @@
 #ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
   struct IteratorState {
     IteratorState() : map_(0), link_(0), itemIndex_(0), bucketIndex_(0) {}
-    ValueInternalMap *map_;
-    ValueInternalLink *link_;
+    ValueInternalMap* map_;
+    ValueInternalLink* link_;
     BucketIndex itemIndex_;
     BucketIndex bucketIndex_;
   };
 #endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
 
   ValueInternalMap();
-  ValueInternalMap(const ValueInternalMap &other);
-  ValueInternalMap &operator=(ValueInternalMap other);
+  ValueInternalMap(const ValueInternalMap& other);
+  ValueInternalMap& operator=(ValueInternalMap other);
   ~ValueInternalMap();
 
-  void swap(ValueInternalMap &other);
+  void swap(ValueInternalMap& other);
 
   BucketIndex size() const;
 
@@ -694,46 +694,46 @@
 
   bool reserve(BucketIndex newItemCount);
 
-  const Value *find(const char *key) const;
+  const Value* find(const char* key) const;
 
-  Value *find(const char *key);
+  Value* find(const char* key);
 
-  Value &resolveReference(const char *key, bool isStatic);
+  Value& resolveReference(const char* key, bool isStatic);
 
-  void remove(const char *key);
+  void remove(const char* key);
 
-  void doActualRemove(ValueInternalLink *link,
+  void doActualRemove(ValueInternalLink* link,
                       BucketIndex index,
                       BucketIndex bucketIndex);
 
-  ValueInternalLink *&getLastLinkInBucket(BucketIndex bucketIndex);
+  ValueInternalLink*& getLastLinkInBucket(BucketIndex bucketIndex);
 
-  Value &setNewItem(const char *key,
+  Value& setNewItem(const char* key,
                     bool isStatic,
-                    ValueInternalLink *link,
+                    ValueInternalLink* link,
                     BucketIndex index);
 
-  Value &unsafeAdd(const char *key, bool isStatic, HashKey hashedKey);
+  Value& unsafeAdd(const char* key, bool isStatic, HashKey hashedKey);
 
-  HashKey hash(const char *key) const;
+  HashKey hash(const char* key) const;
 
-  int compare(const ValueInternalMap &other) const;
+  int compare(const ValueInternalMap& other) const;
 
 private:
-  void makeBeginIterator(IteratorState &it) const;
-  void makeEndIterator(IteratorState &it) const;
-  static bool equals(const IteratorState &x, const IteratorState &other);
-  static void increment(IteratorState &iterator);
-  static void incrementBucket(IteratorState &iterator);
-  static void decrement(IteratorState &iterator);
-  static const char *key(const IteratorState &iterator);
-  static const char *key(const IteratorState &iterator, bool &isStatic);
-  static Value &value(const IteratorState &iterator);
-  static int distance(const IteratorState &x, const IteratorState &y);
+  void makeBeginIterator(IteratorState& it) const;
+  void makeEndIterator(IteratorState& it) const;
+  static bool equals(const IteratorState& x, const IteratorState& other);
+  static void increment(IteratorState& iterator);
+  static void incrementBucket(IteratorState& iterator);
+  static void decrement(IteratorState& iterator);
+  static const char* key(const IteratorState& iterator);
+  static const char* key(const IteratorState& iterator, bool& isStatic);
+  static Value& value(const IteratorState& iterator);
+  static int distance(const IteratorState& x, const IteratorState& y);
 
 private:
-  ValueInternalLink *buckets_;
-  ValueInternalLink *tailLink_;
+  ValueInternalLink* buckets_;
+  ValueInternalLink* tailLink_;
   BucketIndex bucketsSize_;
   BucketIndex itemCount_;
 };
@@ -767,44 +767,44 @@
   struct IteratorState // Must be a POD
       {
     IteratorState() : array_(0), currentPageIndex_(0), currentItemIndex_(0) {}
-    ValueInternalArray *array_;
-    Value **currentPageIndex_;
+    ValueInternalArray* array_;
+    Value** currentPageIndex_;
     unsigned int currentItemIndex_;
   };
 #endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
 
   ValueInternalArray();
-  ValueInternalArray(const ValueInternalArray &other);
-  ValueInternalArray &operator=(ValueInternalArray other);
+  ValueInternalArray(const ValueInternalArray& other);
+  ValueInternalArray& operator=(ValueInternalArray other);
   ~ValueInternalArray();
-  void swap(ValueInternalArray &other);
+  void swap(ValueInternalArray& other);
 
   void clear();
   void resize(ArrayIndex newSize);
 
-  Value &resolveReference(ArrayIndex index);
+  Value& resolveReference(ArrayIndex index);
 
-  Value *find(ArrayIndex index) const;
+  Value* find(ArrayIndex index) const;
 
   ArrayIndex size() const;
 
-  int compare(const ValueInternalArray &other) const;
+  int compare(const ValueInternalArray& other) const;
 
 private:
-  static bool equals(const IteratorState &x, const IteratorState &other);
-  static void increment(IteratorState &iterator);
-  static void decrement(IteratorState &iterator);
-  static Value &dereference(const IteratorState &iterator);
-  static Value &unsafeDereference(const IteratorState &iterator);
-  static int distance(const IteratorState &x, const IteratorState &y);
-  static ArrayIndex indexOf(const IteratorState &iterator);
-  void makeBeginIterator(IteratorState &it) const;
-  void makeEndIterator(IteratorState &it) const;
-  void makeIterator(IteratorState &it, ArrayIndex index) const;
+  static bool equals(const IteratorState& x, const IteratorState& other);
+  static void increment(IteratorState& iterator);
+  static void decrement(IteratorState& iterator);
+  static Value& dereference(const IteratorState& iterator);
+  static Value& unsafeDereference(const IteratorState& iterator);
+  static int distance(const IteratorState& x, const IteratorState& y);
+  static ArrayIndex indexOf(const IteratorState& iterator);
+  void makeBeginIterator(IteratorState& it) const;
+  void makeEndIterator(IteratorState& it) const;
+  void makeIterator(IteratorState& it, ArrayIndex index) const;
 
   void makeIndexValid(ArrayIndex index);
 
-  Value **pages_;
+  Value** pages_;
   ArrayIndex size_;
   PageIndex pageCount_;
 };
@@ -875,9 +875,9 @@
 class JSON_API ValueArrayAllocator {
 public:
   virtual ~ValueArrayAllocator();
-  virtual ValueInternalArray *newArray() = 0;
-  virtual ValueInternalArray *newArrayCopy(const ValueInternalArray &other) = 0;
-  virtual void destructArray(ValueInternalArray *array) = 0;
+  virtual ValueInternalArray* newArray() = 0;
+  virtual ValueInternalArray* newArrayCopy(const ValueInternalArray& other) = 0;
+  virtual void destructArray(ValueInternalArray* array) = 0;
   /** \brief Reallocate array page index.
    * Reallocates an array of pointer on each page.
    * \param indexes [input] pointer on the current index. May be \c NULL.
@@ -891,14 +891,14 @@
    *                         handle.
    */
   virtual void
-  reallocateArrayPageIndex(Value **&indexes,
-                           ValueInternalArray::PageIndex &indexCount,
+  reallocateArrayPageIndex(Value**& indexes,
+                           ValueInternalArray::PageIndex& indexCount,
                            ValueInternalArray::PageIndex minNewIndexCount) = 0;
   virtual void
-  releaseArrayPageIndex(Value **indexes,
+  releaseArrayPageIndex(Value** indexes,
                         ValueInternalArray::PageIndex indexCount) = 0;
-  virtual Value *allocateArrayPage() = 0;
-  virtual void releaseArrayPage(Value *value) = 0;
+  virtual Value* allocateArrayPage() = 0;
+  virtual void releaseArrayPage(Value* value) = 0;
 };
 #endif // #ifdef JSON_VALUE_USE_INTERNAL_MAP
 
@@ -914,17 +914,17 @@
 
   ValueIteratorBase();
 #ifndef JSON_VALUE_USE_INTERNAL_MAP
-  explicit ValueIteratorBase(const Value::ObjectValues::iterator &current);
+  explicit ValueIteratorBase(const Value::ObjectValues::iterator& current);
 #else
-  ValueIteratorBase(const ValueInternalArray::IteratorState &state);
-  ValueIteratorBase(const ValueInternalMap::IteratorState &state);
+  ValueIteratorBase(const ValueInternalArray::IteratorState& state);
+  ValueIteratorBase(const ValueInternalMap::IteratorState& state);
 #endif
 
-  bool operator==(const SelfType &other) const { return isEqual(other); }
+  bool operator==(const SelfType& other) const { return isEqual(other); }
 
-  bool operator!=(const SelfType &other) const { return !isEqual(other); }
+  bool operator!=(const SelfType& other) const { return !isEqual(other); }
 
-  difference_type operator-(const SelfType &other) const {
+  difference_type operator-(const SelfType& other) const {
     return computeDistance(other);
   }
 
@@ -937,20 +937,20 @@
 
   /// Return the member name of the referenced Value. "" if it is not an
   /// objectValue.
-  const char *memberName() const;
+  const char* memberName() const;
 
 protected:
-  Value &deref() const;
+  Value& deref() const;
 
   void increment();
 
   void decrement();
 
-  difference_type computeDistance(const SelfType &other) const;
+  difference_type computeDistance(const SelfType& other) const;
 
-  bool isEqual(const SelfType &other) const;
+  bool isEqual(const SelfType& other) const;
 
-  void copy(const SelfType &other);
+  void copy(const SelfType& other);
 
 private:
 #ifndef JSON_VALUE_USE_INTERNAL_MAP
@@ -976,8 +976,8 @@
   typedef const Value value_type;
   typedef unsigned int size_t;
   typedef int difference_type;
-  typedef const Value &reference;
-  typedef const Value *pointer;
+  typedef const Value& reference;
+  typedef const Value* pointer;
   typedef ValueConstIterator SelfType;
 
   ValueConstIterator();
@@ -986,13 +986,13 @@
 /*! \internal Use by Value to create an iterator.
  */
 #ifndef JSON_VALUE_USE_INTERNAL_MAP
-  explicit ValueConstIterator(const Value::ObjectValues::iterator &current);
+  explicit ValueConstIterator(const Value::ObjectValues::iterator& current);
 #else
-  ValueConstIterator(const ValueInternalArray::IteratorState &state);
-  ValueConstIterator(const ValueInternalMap::IteratorState &state);
+  ValueConstIterator(const ValueInternalArray::IteratorState& state);
+  ValueConstIterator(const ValueInternalMap::IteratorState& state);
 #endif
 public:
-  SelfType &operator=(const ValueIteratorBase &other);
+  SelfType& operator=(const ValueIteratorBase& other);
 
   SelfType operator++(int) {
     SelfType temp(*this);
@@ -1006,12 +1006,12 @@
     return temp;
   }
 
-  SelfType &operator--() {
+  SelfType& operator--() {
     decrement();
     return *this;
   }
 
-  SelfType &operator++() {
+  SelfType& operator++() {
     increment();
     return *this;
   }
@@ -1030,25 +1030,25 @@
   typedef Value value_type;
   typedef unsigned int size_t;
   typedef int difference_type;
-  typedef Value &reference;
-  typedef Value *pointer;
+  typedef Value& reference;
+  typedef Value* pointer;
   typedef ValueIterator SelfType;
 
   ValueIterator();
-  ValueIterator(const ValueConstIterator &other);
-  ValueIterator(const ValueIterator &other);
+  ValueIterator(const ValueConstIterator& other);
+  ValueIterator(const ValueIterator& other);
 
 private:
 /*! \internal Use by Value to create an iterator.
  */
 #ifndef JSON_VALUE_USE_INTERNAL_MAP
-  explicit ValueIterator(const Value::ObjectValues::iterator &current);
+  explicit ValueIterator(const Value::ObjectValues::iterator& current);
 #else
-  ValueIterator(const ValueInternalArray::IteratorState &state);
-  ValueIterator(const ValueInternalMap::IteratorState &state);
+  ValueIterator(const ValueInternalArray::IteratorState& state);
+  ValueIterator(const ValueInternalMap::IteratorState& state);
 #endif
 public:
-  SelfType &operator=(const SelfType &other);
+  SelfType& operator=(const SelfType& other);
 
   SelfType operator++(int) {
     SelfType temp(*this);
@@ -1062,12 +1062,12 @@
     return temp;
   }
 
-  SelfType &operator--() {
+  SelfType& operator--() {
     decrement();
     return *this;
   }
 
-  SelfType &operator++() {
+  SelfType& operator++() {
     increment();
     return *this;
   }
diff --git a/include/json/writer.h b/include/json/writer.h
index fa79c2c..dc9e46f 100644
--- a/include/json/writer.h
+++ b/include/json/writer.h
@@ -29,7 +29,7 @@
 public:
   virtual ~Writer();
 
-  virtual std::string write(const Value &root) = 0;
+  virtual std::string write(const Value& root) = 0;
 };
 
 /** \brief Outputs a Value in <a HREF="http://www.json.org">JSON</a> format
@@ -57,10 +57,10 @@
   void omitEndingLineFeed();
 
 public: // overridden from Writer
-  virtual std::string write(const Value &root);
+  virtual std::string write(const Value& root);
 
 private:
-  void writeValue(const Value &value);
+  void writeValue(const Value& value);
 
   std::string document_;
   bool yamlCompatiblityEnabled_;
@@ -101,21 +101,21 @@
    * \param root Value to serialize.
    * \return String containing the JSON document that represents the root value.
    */
-  virtual std::string write(const Value &root);
+  virtual std::string write(const Value& root);
 
 private:
-  void writeValue(const Value &value);
-  void writeArrayValue(const Value &value);
-  bool isMultineArray(const Value &value);
-  void pushValue(const std::string &value);
+  void writeValue(const Value& value);
+  void writeArrayValue(const Value& value);
+  bool isMultineArray(const Value& value);
+  void pushValue(const std::string& value);
   void writeIndent();
-  void writeWithIndent(const std::string &value);
+  void writeWithIndent(const std::string& value);
   void indent();
   void unindent();
-  void writeCommentBeforeValue(const Value &root);
-  void writeCommentAfterValueOnSameLine(const Value &root);
-  bool hasCommentForValue(const Value &value);
-  static std::string normalizeEOL(const std::string &text);
+  void writeCommentBeforeValue(const Value& root);
+  void writeCommentAfterValueOnSameLine(const Value& root);
+  bool hasCommentForValue(const Value& value);
+  static std::string normalizeEOL(const std::string& text);
 
   typedef std::vector<std::string> ChildValues;
 
@@ -164,26 +164,26 @@
    * \note There is no point in deriving from Writer, since write() should not
    * return a value.
    */
-  void write(std::ostream &out, const Value &root);
+  void write(std::ostream& out, const Value& root);
 
 private:
-  void writeValue(const Value &value);
-  void writeArrayValue(const Value &value);
-  bool isMultineArray(const Value &value);
-  void pushValue(const std::string &value);
+  void writeValue(const Value& value);
+  void writeArrayValue(const Value& value);
+  bool isMultineArray(const Value& value);
+  void pushValue(const std::string& value);
   void writeIndent();
-  void writeWithIndent(const std::string &value);
+  void writeWithIndent(const std::string& value);
   void indent();
   void unindent();
-  void writeCommentBeforeValue(const Value &root);
-  void writeCommentAfterValueOnSameLine(const Value &root);
-  bool hasCommentForValue(const Value &value);
-  static std::string normalizeEOL(const std::string &text);
+  void writeCommentBeforeValue(const Value& root);
+  void writeCommentAfterValueOnSameLine(const Value& root);
+  bool hasCommentForValue(const Value& value);
+  static std::string normalizeEOL(const std::string& text);
 
   typedef std::vector<std::string> ChildValues;
 
   ChildValues childValues_;
-  std::ostream *document_;
+  std::ostream* document_;
   std::string indentString_;
   int rightMargin_;
   std::string indentation_;
@@ -198,11 +198,11 @@
 std::string JSON_API valueToString(LargestUInt value);
 std::string JSON_API valueToString(double value);
 std::string JSON_API valueToString(bool value);
-std::string JSON_API valueToQuotedString(const char *value);
+std::string JSON_API valueToQuotedString(const char* value);
 
 /// \brief Output using the StyledStreamWriter.
 /// \see Json::operator>>()
-JSON_API std::ostream &operator<<(std::ostream &, const Value &root);
+JSON_API std::ostream& operator<<(std::ostream&, const Value& root);
 
 } // namespace Json