@Override
	public boolean equals( Object o )
	{
		if( this == o )
			return true;
		if( o == null || getClass() != o.getClass() )
			return false;

		ComplexImmutableObject that = ( ComplexImmutableObject )o;

		if( initialValue != that.initialValue )
			return false;
		if( strict != that.strict )
			return false;
		if( timeout != that.timeout )
			return false;
		if( !context.equals( that.context ) )
			return false;
		if( !name.equals( that.name ) )
			return false;
		if( !nameSpace.equals( that.nameSpace ) )
			return false;

		return true;
	}