Four optional fields one for each potential context really strikes me as a code-smell / anti-pattern.
Your application gets a new context and you add another field? There must be a better way to do this.
Your application gets a new context and you add another field? There must be a better way to do this.