    # File lib/chef/node/attribute.rb, line 289
          def determine_value(a_value, o_value, n_value, d_value)
            if hash_and_not_cna?(a_value)
              value = {}
              value = Chef::Mixin::DeepMerge.merge(value, d_value) if hash_and_not_cna?(d_value)
              value = Chef::Mixin::DeepMerge.merge(value, n_value) if hash_and_not_cna?(n_value)
              value = Chef::Mixin::DeepMerge.merge(value, o_value) if hash_and_not_cna?(o_value)
              value = Chef::Mixin::DeepMerge.merge(value, a_value)
              value
            elsif hash_and_not_cna?(o_value)
              value = {}
              value = Chef::Mixin::DeepMerge.merge(value, d_value) if hash_and_not_cna?(d_value)
              value = Chef::Mixin::DeepMerge.merge(value, n_value) if hash_and_not_cna?(n_value)
              value = Chef::Mixin::DeepMerge.merge(value, o_value)
              value
            elsif hash_and_not_cna?(n_value)
              value = {}
              value = Chef::Mixin::DeepMerge.merge(value, d_value) if hash_and_not_cna?(d_value)
              value = Chef::Mixin::DeepMerge.merge(value, n_value)
              value
            elsif hash_and_not_cna?(d_value)
              d_value
            else
              return a_value if ! a_value.nil?
              return o_value if ! o_value.nil?
              return n_value if ! n_value.nil?
              return d_value if ! d_value.nil?
              return nil
            end
          end