diff --git a/lib/bson/array.rb b/lib/bson/array.rb
index <HASH>..<HASH> 100644
--- a/lib/bson/array.rb
+++ b/lib/bson/array.rb
@@ -73,11 +73,11 @@ module BSON
     # @example Convert the array to a normalized value.
     #   array.to_bson_normalized_value
     #
-    # @return [ Array ] The normazlied array.
+    # @return [ Array ] The normalized array.
     #
     # @since 3.0.0
     def to_bson_normalized_value
-      map!{ |value| value.to_bson_normalized_value }
+      map { |value| value.to_bson_normalized_value }
     end
 
     module ClassMethods
diff --git a/spec/bson/array_spec.rb b/spec/bson/array_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/bson/array_spec.rb
+++ b/spec/bson/array_spec.rb
@@ -29,6 +29,19 @@ describe Array do
     it_behaves_like "a deserializable bson element"
   end
 
+  describe "#to_bson_normalized_value" do
+
+    let(:klass) { Class.new(Hash) }
+    let(:obj)  {[ Foo.new ]}
+
+    before(:each) { stub_const "Foo", klass }
+
+    it "does not mutate the receiver" do
+      obj.to_bson_normalized_value
+      expect(obj.first.class).to eq(Foo)
+    end
+  end
+
   describe "#to_bson_object_id" do
 
     context "when the array has 12 elements" do
RUBY-<I> Array#to_bson_normalized_value shouldn't mutate the receiver

Ref. <URL>