: like Current
            -- New object equal to `Current'
            -- `twin' calls `copy'; to change copying/twinning semantics, redefine `copy'.
        external
            "built_in"
        ensure
            twin_not_void: Result /= Void
            is_equal: Result ~ Current
        end

    copy (other: like Current)
            -- Update current object using fields of object attached
            -- to `other', so as to yield equal objects.
        require
            other_not_voi