Notice: Some portions of this class where ported from Ruby's ActiveSupport library which are Copyright (c) 2005-2006 David Heinemeier Hansson and under the MIT license.