Declaring and checking non-null types in an object-oriented language | Synapse