added AgainstNullArgumentPropertyIfNullable
refactored
tidied up specifications