Layout specification and discovery should follow the same behavior as partials

Fixes #1047
`[NotNull]` is specified in the implementation.