     # described by this document. If you do not supply example
     # this method will return you one, assuming it was set before.
     # Notes are warning/beware messages about the implementation.
+    # The argument could be a function, see coding for that one.
     remark: (remark) ->
-        return @$remark if arguments.length is 0
+        fn = _.isFunction(x = @$remark) and x
+        auto = => if fn then x.call this else x
+        assigns = => assert @$remark = remark
+        return auto() if arguments.length is 0
+        return assigns() if _.isFunction remark
         noRemark = "the remark is not a string"
         assert _.isString(remark), noRemark
         @emit.call this, "remark", arguments...

    # described by this document. If you do not supply inputs
    # this method will return you one, assuming it was set before.
    # Inputs is a description of the body that method expects.
    inputs: (inputs) ->
        return @$inputs if arguments.length is 0
        noInputs = "the inputs is not a string"
        assert _.isString(inputs), noInputs
        @emit.call this, "inputs", arguments...

    # is being described by this document. If you do no supply any
    # arguments this method will return already described failures.
    # The version should be a string with an arbitrary contents.
    # The argument could be a function, see coding for that one.
    version: (version) ->
        fn = _.isFunction(x = @$version) and x
        auto = => if fn then x.call this else x
        assigns = => assert @$version = version
        return auto() if arguments.length is 0
        return assigns() if _.isFunction version
        noVersion = "the version is not a string"
        assert _.isString(version), noVersion
        @emit.call this, "version", arguments...
        return @$version = version.toString()
