The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Successful build of Shaft, reference main (ea5299), with Swift 6.2 for macOS (SPM) on 22 Nov 2025 16:09:03 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-26.0.0.app xcrun swift build --arch arm64

Build Log

656 |     case insert = 0x0007_0049
657 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/home'
   --> Sources/Shaft/Core/KeyboardKey.swift:660:28-660:39
658 |     /// Represents the location of the "Home" key on a generalized keyboard.
659 |     ///
660 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
661 |     case home = 0x0007_004a
662 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/pageUp'
   --> Sources/Shaft/Core/KeyboardKey.swift:665:28-665:39
663 |     /// Represents the location of the "Page Up" key on a generalized keyboard.
664 |     ///
665 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
666 |     case pageUp = 0x0007_004b
667 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/delete'
   --> Sources/Shaft/Core/KeyboardKey.swift:670:28-670:39
668 |     /// Represents the location of the "Delete" key on a generalized keyboard.
669 |     ///
670 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
671 |     case delete = 0x0007_004c
672 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/end'
   --> Sources/Shaft/Core/KeyboardKey.swift:675:28-675:39
673 |     /// Represents the location of the "End" key on a generalized keyboard.
674 |     ///
675 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
676 |     case end = 0x0007_004d
677 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/pageDown'
   --> Sources/Shaft/Core/KeyboardKey.swift:680:28-680:39
678 |     /// Represents the location of the "Page Down" key on a generalized keyboard.
679 |     ///
680 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
681 |     case pageDown = 0x0007_004e
682 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/arrowRight'
   --> Sources/Shaft/Core/KeyboardKey.swift:686:28-686:39
684 |     /// keyboard.
685 |     ///
686 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
687 |     case arrowRight = 0x0007_004f
688 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/arrowLeft'
   --> Sources/Shaft/Core/KeyboardKey.swift:691:28-691:39
689 |     /// Represents the location of the "Arrow Left" key on a generalized keyboard.
690 |     ///
691 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
692 |     case arrowLeft = 0x0007_0050
693 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/arrowDown'
   --> Sources/Shaft/Core/KeyboardKey.swift:696:28-696:39
694 |     /// Represents the location of the "Arrow Down" key on a generalized keyboard.
695 |     ///
696 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
697 |     case arrowDown = 0x0007_0051
698 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/arrowUp'
   --> Sources/Shaft/Core/KeyboardKey.swift:701:28-701:39
699 |     /// Represents the location of the "Arrow Up" key on a generalized keyboard.
700 |     ///
701 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
702 |     case arrowUp = 0x0007_0052
703 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numLock'
   --> Sources/Shaft/Core/KeyboardKey.swift:706:28-706:39
704 |     /// Represents the location of the "Num Lock" key on a generalized keyboard.
705 |     ///
706 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
707 |     case numLock = 0x0007_0053
708 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadDivide'
   --> Sources/Shaft/Core/KeyboardKey.swift:712:28-712:39
710 |     /// keyboard.
711 |     ///
712 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
713 |     case numpadDivide = 0x0007_0054
714 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadMultiply'
   --> Sources/Shaft/Core/KeyboardKey.swift:718:28-718:39
716 |     /// keyboard.
717 |     ///
718 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
719 |     case numpadMultiply = 0x0007_0055
720 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadSubtract'
   --> Sources/Shaft/Core/KeyboardKey.swift:724:28-724:39
722 |     /// keyboard.
723 |     ///
724 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
725 |     case numpadSubtract = 0x0007_0056
726 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadAdd'
   --> Sources/Shaft/Core/KeyboardKey.swift:729:28-729:39
727 |     /// Represents the location of the "Numpad Add" key on a generalized keyboard.
728 |     ///
729 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
730 |     case numpadAdd = 0x0007_0057
731 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadEnter'
   --> Sources/Shaft/Core/KeyboardKey.swift:735:28-735:39
733 |     /// keyboard.
734 |     ///
735 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
736 |     case numpadEnter = 0x0007_0058
737 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpad1'
   --> Sources/Shaft/Core/KeyboardKey.swift:740:28-740:39
738 |     /// Represents the location of the "Numpad 1" key on a generalized keyboard.
739 |     ///
740 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
741 |     case numpad1 = 0x0007_0059
742 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpad2'
   --> Sources/Shaft/Core/KeyboardKey.swift:745:28-745:39
743 |     /// Represents the location of the "Numpad 2" key on a generalized keyboard.
744 |     ///
745 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
746 |     case numpad2 = 0x0007_005a
747 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpad3'
   --> Sources/Shaft/Core/KeyboardKey.swift:750:28-750:39
748 |     /// Represents the location of the "Numpad 3" key on a generalized keyboard.
749 |     ///
750 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
751 |     case numpad3 = 0x0007_005b
752 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpad4'
   --> Sources/Shaft/Core/KeyboardKey.swift:755:28-755:39
753 |     /// Represents the location of the "Numpad 4" key on a generalized keyboard.
754 |     ///
755 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
756 |     case numpad4 = 0x0007_005c
757 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpad5'
   --> Sources/Shaft/Core/KeyboardKey.swift:760:28-760:39
758 |     /// Represents the location of the "Numpad 5" key on a generalized keyboard.
759 |     ///
760 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
761 |     case numpad5 = 0x0007_005d
762 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpad6'
   --> Sources/Shaft/Core/KeyboardKey.swift:765:28-765:39
763 |     /// Represents the location of the "Numpad 6" key on a generalized keyboard.
764 |     ///
765 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
766 |     case numpad6 = 0x0007_005e
767 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpad7'
   --> Sources/Shaft/Core/KeyboardKey.swift:770:28-770:39
768 |     /// Represents the location of the "Numpad 7" key on a generalized keyboard.
769 |     ///
770 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
771 |     case numpad7 = 0x0007_005f
772 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpad8'
   --> Sources/Shaft/Core/KeyboardKey.swift:775:28-775:39
773 |     /// Represents the location of the "Numpad 8" key on a generalized keyboard.
774 |     ///
775 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
776 |     case numpad8 = 0x0007_0060
777 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpad9'
   --> Sources/Shaft/Core/KeyboardKey.swift:780:28-780:39
778 |     /// Represents the location of the "Numpad 9" key on a generalized keyboard.
779 |     ///
780 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
781 |     case numpad9 = 0x0007_0061
782 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpad0'
   --> Sources/Shaft/Core/KeyboardKey.swift:785:28-785:39
783 |     /// Represents the location of the "Numpad 0" key on a generalized keyboard.
784 |     ///
785 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
786 |     case numpad0 = 0x0007_0062
787 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadDecimal'
   --> Sources/Shaft/Core/KeyboardKey.swift:791:28-791:39
789 |     /// keyboard.
790 |     ///
791 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
792 |     case numpadDecimal = 0x0007_0063
793 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/intlBackslash'
   --> Sources/Shaft/Core/KeyboardKey.swift:797:28-797:39
795 |     /// keyboard.
796 |     ///
797 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
798 |     case intlBackslash = 0x0007_0064
799 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/contextMenu'
   --> Sources/Shaft/Core/KeyboardKey.swift:803:28-803:39
801 |     /// keyboard.
802 |     ///
803 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
804 |     case contextMenu = 0x0007_0065
805 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/power'
   --> Sources/Shaft/Core/KeyboardKey.swift:808:28-808:39
806 |     /// Represents the location of the "Power" key on a generalized keyboard.
807 |     ///
808 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
809 |     case power = 0x0007_0066
810 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadEqual'
   --> Sources/Shaft/Core/KeyboardKey.swift:814:28-814:39
812 |     /// keyboard.
813 |     ///
814 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
815 |     case numpadEqual = 0x0007_0067
816 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/f13'
   --> Sources/Shaft/Core/KeyboardKey.swift:819:28-819:39
817 |     /// Represents the location of the "F13" key on a generalized keyboard.
818 |     ///
819 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
820 |     case f13 = 0x0007_0068
821 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/f14'
   --> Sources/Shaft/Core/KeyboardKey.swift:824:28-824:39
822 |     /// Represents the location of the "F14" key on a generalized keyboard.
823 |     ///
824 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
825 |     case f14 = 0x0007_0069
826 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/f15'
   --> Sources/Shaft/Core/KeyboardKey.swift:829:28-829:39
827 |     /// Represents the location of the "F15" key on a generalized keyboard.
828 |     ///
829 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
830 |     case f15 = 0x0007_006a
831 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/f16'
   --> Sources/Shaft/Core/KeyboardKey.swift:834:28-834:39
832 |     /// Represents the location of the "F16" key on a generalized keyboard.
833 |     ///
834 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
835 |     case f16 = 0x0007_006b
836 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/f17'
   --> Sources/Shaft/Core/KeyboardKey.swift:839:28-839:39
837 |     /// Represents the location of the "F17" key on a generalized keyboard.
838 |     ///
839 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
840 |     case f17 = 0x0007_006c
841 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/f18'
   --> Sources/Shaft/Core/KeyboardKey.swift:844:28-844:39
842 |     /// Represents the location of the "F18" key on a generalized keyboard.
843 |     ///
844 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
845 |     case f18 = 0x0007_006d
846 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/f19'
   --> Sources/Shaft/Core/KeyboardKey.swift:849:28-849:39
847 |     /// Represents the location of the "F19" key on a generalized keyboard.
848 |     ///
849 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
850 |     case f19 = 0x0007_006e
851 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/f20'
   --> Sources/Shaft/Core/KeyboardKey.swift:854:28-854:39
852 |     /// Represents the location of the "F20" key on a generalized keyboard.
853 |     ///
854 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
855 |     case f20 = 0x0007_006f
856 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/f21'
   --> Sources/Shaft/Core/KeyboardKey.swift:859:28-859:39
857 |     /// Represents the location of the "F21" key on a generalized keyboard.
858 |     ///
859 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
860 |     case f21 = 0x0007_0070
861 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/f22'
   --> Sources/Shaft/Core/KeyboardKey.swift:864:28-864:39
862 |     /// Represents the location of the "F22" key on a generalized keyboard.
863 |     ///
864 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
865 |     case f22 = 0x0007_0071
866 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/f23'
   --> Sources/Shaft/Core/KeyboardKey.swift:869:28-869:39
867 |     /// Represents the location of the "F23" key on a generalized keyboard.
868 |     ///
869 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
870 |     case f23 = 0x0007_0072
871 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/f24'
   --> Sources/Shaft/Core/KeyboardKey.swift:874:28-874:39
872 |     /// Represents the location of the "F24" key on a generalized keyboard.
873 |     ///
874 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
875 |     case f24 = 0x0007_0073
876 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/open'
   --> Sources/Shaft/Core/KeyboardKey.swift:879:28-879:39
877 |     /// Represents the location of the "Open" key on a generalized keyboard.
878 |     ///
879 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
880 |     case open = 0x0007_0074
881 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/help'
   --> Sources/Shaft/Core/KeyboardKey.swift:884:28-884:39
882 |     /// Represents the location of the "Help" key on a generalized keyboard.
883 |     ///
884 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
885 |     case help = 0x0007_0075
886 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/select'
   --> Sources/Shaft/Core/KeyboardKey.swift:889:28-889:39
887 |     /// Represents the location of the "Select" key on a generalized keyboard.
888 |     ///
889 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
890 |     case select = 0x0007_0077
891 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/again'
   --> Sources/Shaft/Core/KeyboardKey.swift:894:28-894:39
892 |     /// Represents the location of the "Again" key on a generalized keyboard.
893 |     ///
894 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
895 |     case again = 0x0007_0079
896 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/undo'
   --> Sources/Shaft/Core/KeyboardKey.swift:899:28-899:39
897 |     /// Represents the location of the "Undo" key on a generalized keyboard.
898 |     ///
899 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
900 |     case undo = 0x0007_007a
901 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/cut'
   --> Sources/Shaft/Core/KeyboardKey.swift:904:28-904:39
902 |     /// Represents the location of the "Cut" key on a generalized keyboard.
903 |     ///
904 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
905 |     case cut = 0x0007_007b
906 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/copy'
   --> Sources/Shaft/Core/KeyboardKey.swift:909:28-909:39
907 |     /// Represents the location of the "Copy" key on a generalized keyboard.
908 |     ///
909 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
910 |     case copy = 0x0007_007c
911 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/paste'
   --> Sources/Shaft/Core/KeyboardKey.swift:914:28-914:39
912 |     /// Represents the location of the "Paste" key on a generalized keyboard.
913 |     ///
914 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
915 |     case paste = 0x0007_007d
916 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/find'
   --> Sources/Shaft/Core/KeyboardKey.swift:919:28-919:39
917 |     /// Represents the location of the "Find" key on a generalized keyboard.
918 |     ///
919 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
920 |     case find = 0x0007_007e
921 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/audioVolumeMute'
   --> Sources/Shaft/Core/KeyboardKey.swift:925:28-925:39
923 |     /// keyboard.
924 |     ///
925 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
926 |     case audioVolumeMute = 0x0007_007f
927 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/audioVolumeUp'
   --> Sources/Shaft/Core/KeyboardKey.swift:931:28-931:39
929 |     /// keyboard.
930 |     ///
931 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
932 |     case audioVolumeUp = 0x0007_0080
933 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/audioVolumeDown'
   --> Sources/Shaft/Core/KeyboardKey.swift:937:28-937:39
935 |     /// keyboard.
936 |     ///
937 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
938 |     case audioVolumeDown = 0x0007_0081
939 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadComma'
   --> Sources/Shaft/Core/KeyboardKey.swift:943:28-943:39
941 |     /// keyboard.
942 |     ///
943 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
944 |     case numpadComma = 0x0007_0085
945 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/intlRo'
   --> Sources/Shaft/Core/KeyboardKey.swift:948:28-948:39
946 |     /// Represents the location of the "Intl Ro" key on a generalized keyboard.
947 |     ///
948 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
949 |     case intlRo = 0x0007_0087
950 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/kanaMode'
   --> Sources/Shaft/Core/KeyboardKey.swift:953:28-953:39
951 |     /// Represents the location of the "Kana Mode" key on a generalized keyboard.
952 |     ///
953 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
954 |     case kanaMode = 0x0007_0088
955 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/intlYen'
   --> Sources/Shaft/Core/KeyboardKey.swift:958:28-958:39
956 |     /// Represents the location of the "Intl Yen" key on a generalized keyboard.
957 |     ///
958 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
959 |     case intlYen = 0x0007_0089
960 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/convert'
   --> Sources/Shaft/Core/KeyboardKey.swift:963:28-963:39
961 |     /// Represents the location of the "Convert" key on a generalized keyboard.
962 |     ///
963 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
964 |     case convert = 0x0007_008a
965 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/nonConvert'
   --> Sources/Shaft/Core/KeyboardKey.swift:969:28-969:39
967 |     /// keyboard.
968 |     ///
969 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
970 |     case nonConvert = 0x0007_008b
971 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/lang1'
   --> Sources/Shaft/Core/KeyboardKey.swift:974:28-974:39
972 |     /// Represents the location of the "Lang 1" key on a generalized keyboard.
973 |     ///
974 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
975 |     case lang1 = 0x0007_0090
976 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/lang2'
   --> Sources/Shaft/Core/KeyboardKey.swift:979:28-979:39
977 |     /// Represents the location of the "Lang 2" key on a generalized keyboard.
978 |     ///
979 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
980 |     case lang2 = 0x0007_0091
981 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/lang3'
   --> Sources/Shaft/Core/KeyboardKey.swift:984:28-984:39
982 |     /// Represents the location of the "Lang 3" key on a generalized keyboard.
983 |     ///
984 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
985 |     case lang3 = 0x0007_0092
986 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/lang4'
   --> Sources/Shaft/Core/KeyboardKey.swift:989:28-989:39
987 |     /// Represents the location of the "Lang 4" key on a generalized keyboard.
988 |     ///
989 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
990 |     case lang4 = 0x0007_0093
991 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/lang5'
   --> Sources/Shaft/Core/KeyboardKey.swift:994:28-994:39
992 |     /// Represents the location of the "Lang 5" key on a generalized keyboard.
993 |     ///
994 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
995 |     case lang5 = 0x0007_0094
996 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/abort'
    --> Sources/Shaft/Core/KeyboardKey.swift:999:28-999:39
997  |     /// Represents the location of the "Abort" key on a generalized keyboard.
998  |     ///
999  +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1000 |     case abort = 0x0007_009b
1001 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/props'
    --> Sources/Shaft/Core/KeyboardKey.swift:1004:28-1004:39
1002 |     /// Represents the location of the "Props" key on a generalized keyboard.
1003 |     ///
1004 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1005 |     case props = 0x0007_00a3
1006 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadParenLeft'
    --> Sources/Shaft/Core/KeyboardKey.swift:1010:28-1010:39
1008 |     /// keyboard.
1009 |     ///
1010 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1011 |     case numpadParenLeft = 0x0007_00b6
1012 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadParenRight'
    --> Sources/Shaft/Core/KeyboardKey.swift:1016:28-1016:39
1014 |     /// keyboard.
1015 |     ///
1016 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1017 |     case numpadParenRight = 0x0007_00b7
1018 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadBackspace'
    --> Sources/Shaft/Core/KeyboardKey.swift:1022:28-1022:39
1020 |     /// keyboard.
1021 |     ///
1022 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1023 |     case numpadBackspace = 0x0007_00bb
1024 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadMemoryStore'
    --> Sources/Shaft/Core/KeyboardKey.swift:1028:28-1028:39
1026 |     /// keyboard.
1027 |     ///
1028 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1029 |     case numpadMemoryStore = 0x0007_00d0
1030 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadMemoryRecall'
    --> Sources/Shaft/Core/KeyboardKey.swift:1034:28-1034:39
1032 |     /// keyboard.
1033 |     ///
1034 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1035 |     case numpadMemoryRecall = 0x0007_00d1
1036 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadMemoryClear'
    --> Sources/Shaft/Core/KeyboardKey.swift:1040:28-1040:39
1038 |     /// keyboard.
1039 |     ///
1040 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1041 |     case numpadMemoryClear = 0x0007_00d2
1042 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadMemoryAdd'
    --> Sources/Shaft/Core/KeyboardKey.swift:1046:28-1046:39
1044 |     /// keyboard.
1045 |     ///
1046 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1047 |     case numpadMemoryAdd = 0x0007_00d3
1048 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadMemorySubtract'
    --> Sources/Shaft/Core/KeyboardKey.swift:1052:28-1052:39
1050 |     /// generalized keyboard.
1051 |     ///
1052 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1053 |     case numpadMemorySubtract = 0x0007_00d4
1054 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadSignChange'
    --> Sources/Shaft/Core/KeyboardKey.swift:1058:28-1058:39
1056 |     /// keyboard.
1057 |     ///
1058 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1059 |     case numpadSignChange = 0x0007_00d7
1060 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadClear'
    --> Sources/Shaft/Core/KeyboardKey.swift:1064:28-1064:39
1062 |     /// keyboard.
1063 |     ///
1064 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1065 |     case numpadClear = 0x0007_00d8
1066 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/numpadClearEntry'
    --> Sources/Shaft/Core/KeyboardKey.swift:1070:28-1070:39
1068 |     /// keyboard.
1069 |     ///
1070 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1071 |     case numpadClearEntry = 0x0007_00d9
1072 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/controlLeft'
    --> Sources/Shaft/Core/KeyboardKey.swift:1076:28-1076:39
1074 |     /// keyboard.
1075 |     ///
1076 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1077 |     case controlLeft = 0x0007_00e0
1078 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/shiftLeft'
    --> Sources/Shaft/Core/KeyboardKey.swift:1081:28-1081:39
1079 |     /// Represents the location of the "Shift Left" key on a generalized keyboard.
1080 |     ///
1081 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1082 |     case shiftLeft = 0x0007_00e1
1083 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/altLeft'
    --> Sources/Shaft/Core/KeyboardKey.swift:1086:28-1086:39
1084 |     /// Represents the location of the "Alt Left" key on a generalized keyboard.
1085 |     ///
1086 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1087 |     case altLeft = 0x0007_00e2
1088 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/metaLeft'
    --> Sources/Shaft/Core/KeyboardKey.swift:1091:28-1091:39
1089 |     /// Represents the location of the "Meta Left" key on a generalized keyboard.
1090 |     ///
1091 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1092 |     case metaLeft = 0x0007_00e3
1093 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/controlRight'
    --> Sources/Shaft/Core/KeyboardKey.swift:1097:28-1097:39
1095 |     /// keyboard.
1096 |     ///
1097 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1098 |     case controlRight = 0x0007_00e4
1099 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/shiftRight'
    --> Sources/Shaft/Core/KeyboardKey.swift:1103:28-1103:39
1101 |     /// keyboard.
1102 |     ///
1103 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1104 |     case shiftRight = 0x0007_00e5
1105 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/altRight'
    --> Sources/Shaft/Core/KeyboardKey.swift:1108:28-1108:39
1106 |     /// Represents the location of the "Alt Right" key on a generalized keyboard.
1107 |     ///
1108 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1109 |     case altRight = 0x0007_00e6
1110 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/metaRight'
    --> Sources/Shaft/Core/KeyboardKey.swift:1113:28-1113:39
1111 |     /// Represents the location of the "Meta Right" key on a generalized keyboard.
1112 |     ///
1113 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1114 |     case metaRight = 0x0007_00e7
1115 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/info'
    --> Sources/Shaft/Core/KeyboardKey.swift:1118:28-1118:39
1116 |     /// Represents the location of the "Info" key on a generalized keyboard.
1117 |     ///
1118 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1119 |     case info = 0x000c_0060
1120 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/closedCaptionToggle'
    --> Sources/Shaft/Core/KeyboardKey.swift:1124:28-1124:39
1122 |     /// generalized keyboard.
1123 |     ///
1124 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1125 |     case closedCaptionToggle = 0x000c_0061
1126 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/brightnessUp'
    --> Sources/Shaft/Core/KeyboardKey.swift:1130:28-1130:39
1128 |     /// keyboard.
1129 |     ///
1130 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1131 |     case brightnessUp = 0x000c_006f
1132 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/brightnessDown'
    --> Sources/Shaft/Core/KeyboardKey.swift:1136:28-1136:39
1134 |     /// keyboard.
1135 |     ///
1136 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1137 |     case brightnessDown = 0x000c_0070
1138 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/brightnessToggle'
    --> Sources/Shaft/Core/KeyboardKey.swift:1142:28-1142:39
1140 |     /// keyboard.
1141 |     ///
1142 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1143 |     case brightnessToggle = 0x000c_0072
1144 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/brightnessMinimum'
    --> Sources/Shaft/Core/KeyboardKey.swift:1148:28-1148:39
1146 |     /// keyboard.
1147 |     ///
1148 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1149 |     case brightnessMinimum = 0x000c_0073
1150 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/brightnessMaximum'
    --> Sources/Shaft/Core/KeyboardKey.swift:1154:28-1154:39
1152 |     /// keyboard.
1153 |     ///
1154 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1155 |     case brightnessMaximum = 0x000c_0074
1156 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/brightnessAuto'
    --> Sources/Shaft/Core/KeyboardKey.swift:1160:28-1160:39
1158 |     /// keyboard.
1159 |     ///
1160 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1161 |     case brightnessAuto = 0x000c_0075
1162 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/kbdIllumUp'
    --> Sources/Shaft/Core/KeyboardKey.swift:1166:28-1166:39
1164 |     /// keyboard.
1165 |     ///
1166 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1167 |     case kbdIllumUp = 0x000c_0079
1168 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/kbdIllumDown'
    --> Sources/Shaft/Core/KeyboardKey.swift:1172:28-1172:39
1170 |     /// keyboard.
1171 |     ///
1172 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1173 |     case kbdIllumDown = 0x000c_007a
1174 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mediaLast'
    --> Sources/Shaft/Core/KeyboardKey.swift:1177:28-1177:39
1175 |     /// Represents the location of the "Media Last" key on a generalized keyboard.
1176 |     ///
1177 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1178 |     case mediaLast = 0x000c_0083
1179 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchPhone'
    --> Sources/Shaft/Core/KeyboardKey.swift:1183:28-1183:39
1181 |     /// keyboard.
1182 |     ///
1183 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1184 |     case launchPhone = 0x000c_008c
1185 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/programGuide'
    --> Sources/Shaft/Core/KeyboardKey.swift:1189:28-1189:39
1187 |     /// keyboard.
1188 |     ///
1189 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1190 |     case programGuide = 0x000c_008d
1191 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/exit'
    --> Sources/Shaft/Core/KeyboardKey.swift:1194:28-1194:39
1192 |     /// Represents the location of the "Exit" key on a generalized keyboard.
1193 |     ///
1194 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1195 |     case exit = 0x000c_0094
1196 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/channelUp'
    --> Sources/Shaft/Core/KeyboardKey.swift:1199:28-1199:39
1197 |     /// Represents the location of the "Channel Up" key on a generalized keyboard.
1198 |     ///
1199 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1200 |     case channelUp = 0x000c_009c
1201 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/channelDown'
    --> Sources/Shaft/Core/KeyboardKey.swift:1205:28-1205:39
1203 |     /// keyboard.
1204 |     ///
1205 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1206 |     case channelDown = 0x000c_009d
1207 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mediaPlay'
    --> Sources/Shaft/Core/KeyboardKey.swift:1210:28-1210:39
1208 |     /// Represents the location of the "Media Play" key on a generalized keyboard.
1209 |     ///
1210 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1211 |     case mediaPlay = 0x000c_00b0
1212 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mediaPause'
    --> Sources/Shaft/Core/KeyboardKey.swift:1216:28-1216:39
1214 |     /// keyboard.
1215 |     ///
1216 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1217 |     case mediaPause = 0x000c_00b1
1218 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mediaRecord'
    --> Sources/Shaft/Core/KeyboardKey.swift:1222:28-1222:39
1220 |     /// keyboard.
1221 |     ///
1222 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1223 |     case mediaRecord = 0x000c_00b2
1224 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mediaFastForward'
    --> Sources/Shaft/Core/KeyboardKey.swift:1228:28-1228:39
1226 |     /// keyboard.
1227 |     ///
1228 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1229 |     case mediaFastForward = 0x000c_00b3
1230 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mediaRewind'
    --> Sources/Shaft/Core/KeyboardKey.swift:1234:28-1234:39
1232 |     /// keyboard.
1233 |     ///
1234 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1235 |     case mediaRewind = 0x000c_00b4
1236 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mediaTrackNext'
    --> Sources/Shaft/Core/KeyboardKey.swift:1240:28-1240:39
1238 |     /// keyboard.
1239 |     ///
1240 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1241 |     case mediaTrackNext = 0x000c_00b5
1242 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mediaTrackPrevious'
    --> Sources/Shaft/Core/KeyboardKey.swift:1246:28-1246:39
1244 |     /// keyboard.
1245 |     ///
1246 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1247 |     case mediaTrackPrevious = 0x000c_00b6
1248 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mediaStop'
    --> Sources/Shaft/Core/KeyboardKey.swift:1251:28-1251:39
1249 |     /// Represents the location of the "Media Stop" key on a generalized keyboard.
1250 |     ///
1251 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1252 |     case mediaStop = 0x000c_00b7
1253 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/eject'
    --> Sources/Shaft/Core/KeyboardKey.swift:1256:28-1256:39
1254 |     /// Represents the location of the "Eject" key on a generalized keyboard.
1255 |     ///
1256 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1257 |     case eject = 0x000c_00b8
1258 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mediaPlayPause'
    --> Sources/Shaft/Core/KeyboardKey.swift:1262:28-1262:39
1260 |     /// keyboard.
1261 |     ///
1262 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1263 |     case mediaPlayPause = 0x000c_00cd
1264 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/speechInputToggle'
    --> Sources/Shaft/Core/KeyboardKey.swift:1268:28-1268:39
1266 |     /// keyboard.
1267 |     ///
1268 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1269 |     case speechInputToggle = 0x000c_00cf
1270 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/bassBoost'
    --> Sources/Shaft/Core/KeyboardKey.swift:1273:28-1273:39
1271 |     /// Represents the location of the "Bass Boost" key on a generalized keyboard.
1272 |     ///
1273 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1274 |     case bassBoost = 0x000c_00e5
1275 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mediaSelect'
    --> Sources/Shaft/Core/KeyboardKey.swift:1279:28-1279:39
1277 |     /// keyboard.
1278 |     ///
1279 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1280 |     case mediaSelect = 0x000c_0183
1281 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchWordProcessor'
    --> Sources/Shaft/Core/KeyboardKey.swift:1285:28-1285:39
1283 |     /// generalized keyboard.
1284 |     ///
1285 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1286 |     case launchWordProcessor = 0x000c_0184
1287 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchSpreadsheet'
    --> Sources/Shaft/Core/KeyboardKey.swift:1291:28-1291:39
1289 |     /// keyboard.
1290 |     ///
1291 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1292 |     case launchSpreadsheet = 0x000c_0186
1293 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchMail'
    --> Sources/Shaft/Core/KeyboardKey.swift:1297:28-1297:39
1295 |     /// keyboard.
1296 |     ///
1297 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1298 |     case launchMail = 0x000c_018a
1299 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchContacts'
    --> Sources/Shaft/Core/KeyboardKey.swift:1303:28-1303:39
1301 |     /// keyboard.
1302 |     ///
1303 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1304 |     case launchContacts = 0x000c_018d
1305 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchCalendar'
    --> Sources/Shaft/Core/KeyboardKey.swift:1309:28-1309:39
1307 |     /// keyboard.
1308 |     ///
1309 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1310 |     case launchCalendar = 0x000c_018e
1311 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchApp2'
    --> Sources/Shaft/Core/KeyboardKey.swift:1315:28-1315:39
1313 |     /// keyboard.
1314 |     ///
1315 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1316 |     case launchApp2 = 0x000c_0192
1317 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchApp1'
    --> Sources/Shaft/Core/KeyboardKey.swift:1321:28-1321:39
1319 |     /// keyboard.
1320 |     ///
1321 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1322 |     case launchApp1 = 0x000c_0194
1323 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchInternetBrowser'
    --> Sources/Shaft/Core/KeyboardKey.swift:1327:28-1327:39
1325 |     /// generalized keyboard.
1326 |     ///
1327 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1328 |     case launchInternetBrowser = 0x000c_0196
1329 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/logOff'
    --> Sources/Shaft/Core/KeyboardKey.swift:1332:28-1332:39
1330 |     /// Represents the location of the "Log Off" key on a generalized keyboard.
1331 |     ///
1332 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1333 |     case logOff = 0x000c_019c
1334 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/lockScreen'
    --> Sources/Shaft/Core/KeyboardKey.swift:1338:28-1338:39
1336 |     /// keyboard.
1337 |     ///
1338 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1339 |     case lockScreen = 0x000c_019e
1340 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchControlPanel'
    --> Sources/Shaft/Core/KeyboardKey.swift:1344:28-1344:39
1342 |     /// keyboard.
1343 |     ///
1344 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1345 |     case launchControlPanel = 0x000c_019f
1346 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/selectTask'
    --> Sources/Shaft/Core/KeyboardKey.swift:1350:28-1350:39
1348 |     /// keyboard.
1349 |     ///
1350 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1351 |     case selectTask = 0x000c_01a2
1352 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchDocuments'
    --> Sources/Shaft/Core/KeyboardKey.swift:1356:28-1356:39
1354 |     /// keyboard.
1355 |     ///
1356 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1357 |     case launchDocuments = 0x000c_01a7
1358 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/spellCheck'
    --> Sources/Shaft/Core/KeyboardKey.swift:1362:28-1362:39
1360 |     /// keyboard.
1361 |     ///
1362 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1363 |     case spellCheck = 0x000c_01ab
1364 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchKeyboardLayout'
    --> Sources/Shaft/Core/KeyboardKey.swift:1368:28-1368:39
1366 |     /// generalized keyboard.
1367 |     ///
1368 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1369 |     case launchKeyboardLayout = 0x000c_01ae
1370 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchScreenSaver'
    --> Sources/Shaft/Core/KeyboardKey.swift:1374:28-1374:39
1372 |     /// keyboard.
1373 |     ///
1374 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1375 |     case launchScreenSaver = 0x000c_01b1
1376 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchAudioBrowser'
    --> Sources/Shaft/Core/KeyboardKey.swift:1380:28-1380:39
1378 |     /// keyboard.
1379 |     ///
1380 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1381 |     case launchAudioBrowser = 0x000c_01b7
1382 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/launchAssistant'
    --> Sources/Shaft/Core/KeyboardKey.swift:1386:28-1386:39
1384 |     /// keyboard.
1385 |     ///
1386 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1387 |     case launchAssistant = 0x000c_01cb
1388 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/newKey'
    --> Sources/Shaft/Core/KeyboardKey.swift:1391:28-1391:39
1389 |     /// Represents the location of the "New Key" key on a generalized keyboard.
1390 |     ///
1391 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1392 |     case newKey = 0x000c_0201
1393 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/close'
    --> Sources/Shaft/Core/KeyboardKey.swift:1396:28-1396:39
1394 |     /// Represents the location of the "Close" key on a generalized keyboard.
1395 |     ///
1396 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1397 |     case close = 0x000c_0203
1398 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/save'
    --> Sources/Shaft/Core/KeyboardKey.swift:1401:28-1401:39
1399 |     /// Represents the location of the "Save" key on a generalized keyboard.
1400 |     ///
1401 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1402 |     case save = 0x000c_0207
1403 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/print'
    --> Sources/Shaft/Core/KeyboardKey.swift:1406:28-1406:39
1404 |     /// Represents the location of the "Print" key on a generalized keyboard.
1405 |     ///
1406 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1407 |     case print = 0x000c_0208
1408 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/browserSearch'
    --> Sources/Shaft/Core/KeyboardKey.swift:1412:28-1412:39
1410 |     /// keyboard.
1411 |     ///
1412 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1413 |     case browserSearch = 0x000c_0221
1414 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/browserHome'
    --> Sources/Shaft/Core/KeyboardKey.swift:1418:28-1418:39
1416 |     /// keyboard.
1417 |     ///
1418 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1419 |     case browserHome = 0x000c_0223
1420 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/browserBack'
    --> Sources/Shaft/Core/KeyboardKey.swift:1424:28-1424:39
1422 |     /// keyboard.
1423 |     ///
1424 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1425 |     case browserBack = 0x000c_0224
1426 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/browserForward'
    --> Sources/Shaft/Core/KeyboardKey.swift:1430:28-1430:39
1428 |     /// keyboard.
1429 |     ///
1430 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1431 |     case browserForward = 0x000c_0225
1432 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/browserStop'
    --> Sources/Shaft/Core/KeyboardKey.swift:1436:28-1436:39
1434 |     /// keyboard.
1435 |     ///
1436 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1437 |     case browserStop = 0x000c_0226
1438 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/browserRefresh'
    --> Sources/Shaft/Core/KeyboardKey.swift:1442:28-1442:39
1440 |     /// keyboard.
1441 |     ///
1442 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1443 |     case browserRefresh = 0x000c_0227
1444 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/browserFavorites'
    --> Sources/Shaft/Core/KeyboardKey.swift:1448:28-1448:39
1446 |     /// keyboard.
1447 |     ///
1448 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1449 |     case browserFavorites = 0x000c_022a
1450 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/zoomIn'
    --> Sources/Shaft/Core/KeyboardKey.swift:1453:28-1453:39
1451 |     /// Represents the location of the "Zoom In" key on a generalized keyboard.
1452 |     ///
1453 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1454 |     case zoomIn = 0x000c_022d
1455 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/zoomOut'
    --> Sources/Shaft/Core/KeyboardKey.swift:1458:28-1458:39
1456 |     /// Represents the location of the "Zoom Out" key on a generalized keyboard.
1457 |     ///
1458 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1459 |     case zoomOut = 0x000c_022e
1460 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/zoomToggle'
    --> Sources/Shaft/Core/KeyboardKey.swift:1464:28-1464:39
1462 |     /// keyboard.
1463 |     ///
1464 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1465 |     case zoomToggle = 0x000c_0232
1466 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/redo'
    --> Sources/Shaft/Core/KeyboardKey.swift:1469:28-1469:39
1467 |     /// Represents the location of the "Redo" key on a generalized keyboard.
1468 |     ///
1469 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1470 |     case redo = 0x000c_0279
1471 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mailReply'
    --> Sources/Shaft/Core/KeyboardKey.swift:1474:28-1474:39
1472 |     /// Represents the location of the "Mail Reply" key on a generalized keyboard.
1473 |     ///
1474 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1475 |     case mailReply = 0x000c_0289
1476 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mailForward'
    --> Sources/Shaft/Core/KeyboardKey.swift:1480:28-1480:39
1478 |     /// keyboard.
1479 |     ///
1480 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1481 |     case mailForward = 0x000c_028b
1482 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/mailSend'
    --> Sources/Shaft/Core/KeyboardKey.swift:1485:28-1485:39
1483 |     /// Represents the location of the "Mail Send" key on a generalized keyboard.
1484 |     ///
1485 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1486 |     case mailSend = 0x000c_028c
1487 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/keyboardLayoutSelect'
    --> Sources/Shaft/Core/KeyboardKey.swift:1491:28-1491:39
1489 |     /// generalized keyboard.
1490 |     ///
1491 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1492 |     case keyboardLayoutSelect = 0x000c_029d
1493 |
warning: 'RawKeyEvent' doesn't exist at '/Shaft/PhysicalKeyboardKey/showAllWindows'
    --> Sources/Shaft/Core/KeyboardKey.swift:1497:28-1497:39
1495 |     /// keyboard.
1496 |     ///
1497 +     /// See the function ``RawKeyEvent/physicalKey`` for more information.
1498 |     case showAllWindows = 0x000c_029f
1499 | }
warning: 'PlatformDispatcher' doesn't exist at '/Shaft/Locale'
  --> Sources/Shaft/Core/Locale.swift:16:10-16:28
14 | /// See also:
15 | ///
16 + ///  * ``PlatformDispatcher/locale``, which specifies the system's currently selected
17 | ///    ``Locale``.
18 | public struct Locale: Equatable, Hashable {
warning: 'fromSubtags' doesn't exist at '/Shaft/Locale'
  --> Sources/Shaft/Core/Locale.swift:49:21-49:32
47 |     /// See also:
48 |     ///
49 +     ///  * ``Locale/fromSubtags``, which also allows a ``scriptCode`` to be
50 |     ///    specified.
51 |     public init(
warning: 'fromSubtags' doesn't exist at '/Shaft/Locale'
   --> Sources/Shaft/Core/Locale.swift:115:21-115:32
113 |     /// See also:
114 |     ///
115 +     ///  * ``Locale/fromSubtags``, which describes the conventions for creating
116 |     ///    ``Locale`` objects.
117 |     public var languageCode: String {
warning: 'fromSubtags' doesn't exist at '/Shaft/Locale'
   --> Sources/Shaft/Core/Locale.swift:216:21-216:32
214 |     /// See also:
215 |     ///
216 +     ///  * ``Locale/fromSubtags``, which describes the conventions for creating
217 |     ///    ``Locale`` objects.
218 |     public let scriptCode: String?
warning: 'fromSubtags' doesn't exist at '/Shaft/Locale'
   --> Sources/Shaft/Core/Locale.swift:237:21-237:32
235 |     /// See also:
236 |     ///
237 +     ///  * ``Locale/fromSubtags``, which describes the conventions for creating
238 |     ///    ``Locale`` objects.
239 |     public var countryCode: String? {
warning: 'defaultTargetPlatform' doesn't exist at '/Shaft/TargetPlatform'
  --> Sources/Shaft/Core/TargetPlatform.swift:11:11-11:32
9  | /// The platform that user interaction should adapt to target.
10 | ///
11 + /// The ``defaultTargetPlatform`` getter returns the current platform.
12 | ///
13 | /// When using the "flutter run" command, the "o" key will toggle between
warning: 'debugDefaultTargetPlatformOverride' doesn't exist at '/Shaft/TargetPlatform'
  --> Sources/Shaft/Core/TargetPlatform.swift:14:41-14:75
12 | ///
13 | /// When using the "flutter run" command, the "o" key will toggle between
14 + /// values of this enum when updating ``debugDefaultTargetPlatformOverride``.
15 | /// This lets one test how the application will work on various platforms
16 | /// without having to switch emulators or physical devices.
warning: 'nil' doesn't exist at '/Shaft/TextEditingValue/selection'
  --> Sources/Shaft/Core/TextEditing.swift:74:43-74:46
72 |     /// caret position.
73 |     ///
74 +     /// If the current ``selection`` is ``nil``, then the text currently does not
75 |     /// have a selection or a caret location, and most text editing operations
76 |     /// that rely on the current selection (for instance, insert a character at
warning: 'value' doesn't exist at '/Shaft/TextEditingDelta/apply(to:)'
   --> Sources/Shaft/Core/TextEditing.swift:199:35-199:40
197 | /// state as a result of text editing.
198 | public protocol TextEditingDelta {
199 +     /// Get a copy of the given ``value`` with the change applied to it.
200 |     func apply(to value: TextEditingValue) -> TextEditingValue
201 | }
warning: 'extendTo' doesn't exist at '/Shaft/TextSelection/expandTo(_:extentAtIndex:)'
   --> Sources/Shaft/Core/TextEditing.swift:443:30-443:38
441 |     /// ``TextSelection/baseOffset``. Otherwise, their order will be preserved.
442 |     ///
443 +     /// ## Difference with ``extendTo``
    |                              ╰─suggestion: Replace 'extendTo' with 'Difference-with-extendTo'
444 |     /// In contrast with this method, ``extendTo`` is a pivot; it holds
445 |     /// ``TextSelection/baseOffset`` fixed while moving ``TextSelection/extentOffset``
warning: 'extendTo' doesn't exist at '/Shaft/TextSelection/expandTo(_:extentAtIndex:)'
   --> Sources/Shaft/Core/TextEditing.swift:444:41-444:49
442 |     ///
443 |     /// ## Difference with ``extendTo``
444 +     /// In contrast with this method, ``extendTo`` is a pivot; it holds
    |                                         ╰─suggestion: Replace 'extendTo' with 'Difference-with-extendTo'
445 |     /// ``TextSelection/baseOffset`` fixed while moving ``TextSelection/extentOffset``
446 |     /// to the given ``TextPosition``. It doesn't strictly grow the selection and
warning: 'expandTo' doesn't exist at '/Shaft/TextSelection/extendTo(_:)'
   --> Sources/Shaft/Core/TextEditing.swift:490:30-490:38
488 |     /// size of the selection may shrink.
489 |     ///
490 +     /// ## Difference with ``expandTo``
    |                              ╰─suggestion: Replace 'expandTo' with 'Difference-with-expandTo'
491 |     /// In contrast with this method, ``expandTo`` is strictly growth; the
492 |     /// selection is grown to include the given ``TextPosition`` and will never
warning: 'expandTo' doesn't exist at '/Shaft/TextSelection/extendTo(_:)'
   --> Sources/Shaft/Core/TextEditing.swift:491:41-491:49
489 |     ///
490 |     /// ## Difference with ``expandTo``
491 +     /// In contrast with this method, ``expandTo`` is strictly growth; the
    |                                         ╰─suggestion: Replace 'expandTo' with 'Difference-with-expandTo'
492 |     /// selection is grown to include the given ``TextPosition`` and will never
493 |     /// shrink.
warning: 'value' doesn't exist at '/Shaft/TextSelectionDelegate/userUpdateTextEditingValue(_:cause:)'
   --> Sources/Shaft/Core/TextEditing.swift:515:35-515:40
513 |
514 |     /// Indicates that the user has requested the delegate to replace its current
515 +     /// text editing state with ``value``.
516 |     ///
517 |     /// The new ``value`` is treated as user input and thus may subject to input
warning: 'value' doesn't exist at '/Shaft/TextSelectionDelegate/userUpdateTextEditingValue(_:cause:)'
   --> Sources/Shaft/Core/TextEditing.swift:517:19-517:24
515 |     /// text editing state with ``value``.
516 |     ///
517 +     /// The new ``value`` is treated as user input and thus may subject to input
518 |     /// formatting.
519 |     ///
warning: 'userUpdateTextEditingValue' doesn't exist at '/Shaft/EditableTextState'
   --> Sources/Shaft/Core/TextEditing.swift:522:31-522:57
520 |     /// See also:
521 |     ///
522 +     /// * ``EditableTextState/userUpdateTextEditingValue``: an implementation that
    |                               ╰─suggestion: Replace 'userUpdateTextEditingValue' with 'userUpdateTextEditingValue(_:cause:)'
523 |     ///   applies additional pre-processing to the specified ``value``, before
524 |     ///   updating the text editing state.
warning: 'value' doesn't exist at '/Shaft/TextSelectionDelegate/userUpdateTextEditingValue(_:cause:)'
   --> Sources/Shaft/Core/TextEditing.swift:523:64-523:69
521 |     ///
522 |     /// * ``EditableTextState/userUpdateTextEditingValue``: an implementation that
523 +     ///   applies additional pre-processing to the specified ``value``, before
524 |     ///   updating the text editing state.
525 |     func userUpdateTextEditingValue(_ value: TextEditingValue, cause: SelectionChangedCause?)
warning: 'italic' doesn't exist at '/Shaft/FontVariation'
  --> Sources/Shaft/Core/TextTypes.swift:63:25-63:31
61 | ///
62 | /// Some modern fonts allow this to be selected in a more fine-grained manner.
63 + /// See ``FontVariation/italic`` for details.
   |                         ╰─suggestion: Replace 'italic' with 'italic(_:)'
64 | ///
65 | /// Italic type is distinct from slanted glyphs. To control the slant of a
warning: 'slant' doesn't exist at '/Shaft/FontVariation'
  --> Sources/Shaft/Core/TextTypes.swift:66:41-66:46
64 | ///
65 | /// Italic type is distinct from slanted glyphs. To control the slant of a
66 + /// glyph, consider the ``FontVariation/slant`` font feature.
   |                                         ╰─suggestion: Replace 'slant' with 'slant(_:)'
67 | public enum FontStyle {
68 |     /// Use the upright ("Roman") glyphs.
warning: 'weight' doesn't exist at '/Shaft/FontVariation'
   --> Sources/Shaft/Core/TextTypes.swift:104:25-104:31
102 | ///
103 | /// Some modern fonts allow the weight to be adjusted in arbitrary increments.
104 + /// See ``FontVariation/weight`` for details.
    |                         ╰─suggestion: Replace 'weight' with 'weight(_:)'
105 | public struct FontWeight: Equatable {
106 |     private init(_ index: Int, _ value: Int) {
warning: 'binary32' doesn't exist at '/Shaft/FontVariation/value'
   --> Sources/Shaft/Core/TextTypes.swift:420:12-420:20
418 |     ///
419 |     /// While this property is represented as a Float in this API
420 +     /// (``binary32``(https://en.wikipedia.org/wiki/Single-precision_floating-point_format)),
421 |     /// fonts use the fixed-point 16.16 format to represent the value of font
422 |     /// variations. This means that the actual range is -32768.0 to approximately
warning: 'leading' doesn't exist at '/Shaft/TextLeadingDistribution/proportional'
   --> Sources/Shaft/Core/TextTypes.swift:682:27-682:34
680 | /// used with a ``TextStyle/height`` much smaller than 1.0.
681 | public enum TextLeadingDistribution {
682 +     /// Distributes the ``leading``(https://en.wikipedia.org/wiki/Leading)
683 |     /// of the text proportionally above and below the text, to the font's
684 |     /// ascent/descent ratio.
warning: 'String.Index' doesn't exist at '/Shaft/TextIndex'
   --> Sources/Shaft/Core/TextTypes.swift:710:55-710:67
708 | /// rendering library and system APIs still use UTF-16. Therefore, UTF-16
709 | /// offsets are used to represent text positions in the framework, with some
710 + /// helpful utilities to convert between UTF-16 and ``String.Index``.
711 | public struct TextIndex: Equatable {
712 |     public init(utf16Offset: Int) {
warning: 'offset' doesn't exist at '/Shaft/TextRange/collapsed(_:)'
   --> Sources/Shaft/Core/TextTypes.swift:860:15-860:21
858 |     /// A text range that starts and ends at offset.
859 |     ///
860 +     /// The ``offset`` argument must be non-null and greater than or equal to -1.
861 |     public static func collapsed(_ offset: TextIndex) -> Self {
862 |         return Self(start: offset, end: offset)
warning: 'typesetting strut' doesn't exist at '/Shaft/StrutStyle'
   --> Sources/Shaft/Core/TextTypes.swift:981:7-981:24
979 | /// paragraph. This imaginary space is 'shaped' according the properties
980 | /// defined in this class. Flutter's strut is based on
981 + /// ``typesetting strut``(https://en.wikipedia.org/wiki/Strut_(typesetting))
982 | /// and CSS's ``line-height``(https://www.w3.org/TR/CSS2/visudet.html#line-height).
983 | ///
warning: 'line-height' doesn't exist at '/Shaft/StrutStyle'
   --> Sources/Shaft/Core/TextTypes.swift:982:17-982:28
980 | /// defined in this class. Flutter's strut is based on
981 | /// ``typesetting strut``(https://en.wikipedia.org/wiki/Strut_(typesetting))
982 + /// and CSS's ``line-height``(https://www.w3.org/TR/CSS2/visudet.html#line-height).
983 | ///
984 | /// No lines may be shorter than the strut. The ascent and descent of the
warning: 'fontFamily' doesn't exist at '/Shaft/StrutStyle/fontFamilies'
    --> Sources/Shaft/Core/TextTypes.swift:998:33-998:43
996  |     /// provided.
997  |     ///
998  +     /// The value provided in ``fontFamily`` will act as the preferred/first font
999  |     /// family that will be searched for, followed in order by the font families
1000 |     /// in ``fontFamilyFallback``. If all font families are exhausted and no match
warning: 'fontFamilyFallback' doesn't exist at '/Shaft/StrutStyle/fontFamilies'
    --> Sources/Shaft/Core/TextTypes.swift:1000:14-1000:32
998  |     /// The value provided in ``fontFamily`` will act as the preferred/first font
999  |     /// family that will be searched for, followed in order by the font families
1000 +     /// in ``fontFamilyFallback``. If all font families are exhausted and no match
1001 |     /// was found, the default platform font family will be used instead. Unlike
1002 |     /// ``TextStyle/fontFamilyFallback``, the font does not need to contain the
warning: 'leadingDistribution' doesn't exist at '/Shaft/StrutStyle/leading'
    --> Sources/Shaft/Core/TextTypes.swift:1047:55-1047:74
1045 |
1046 |     /// The additional leading to apply to the strut as a multiple of
1047 +     /// ``fontSize``, independent of ``height`` and ``leadingDistribution``.
1048 |     ///
1049 |     /// Leading is additional spacing between lines. Half of the leading is
warning: 'leadingDistribution' doesn't exist at '/Shaft/StrutStyle/leading'
    --> Sources/Shaft/Core/TextTypes.swift:1052:55-1052:74
1050 |     /// added to the top and the other half to the bottom of the line. This
1051 |     /// differs from ``height`` since the spacing is always equally distributed
1052 +     /// above and below the baseline, regardless of ``leadingDistribution``.
1053 |     ///
1054 |     /// The default leading is null, which will use the font-specified leading.
warning: 'layout' doesn't exist at '/Shaft/Paragraph'
    --> Sources/Shaft/Core/TextTypes.swift:1125:35-1125:41
1123 |     /// after the first one that overflows the width constraints are dropped.
1124 |     /// The width constraints are those set in the ``ParagraphConstraints`` object
1125 +     /// passed to the ``Paragraph/layout`` method.
     |                                   ╰─suggestion: Replace 'layout' with 'layout(_:)'
1126 |     public var maxLines: Int?
1127 |
warning: 'layout' doesn't exist at '/Shaft/Paragraph'
    --> Sources/Shaft/Core/TextTypes.swift:1134:21-1134:27
1132 |     /// constraints, and subsequent lines are dropped. The width constraints are
1133 |     /// those set in the ``ParagraphConstraints`` object passed to the
1134 +     /// ``Paragraph/layout`` method. The empty string and the null value are
     |                     ╰─suggestion: Replace 'layout' with 'layout(_:)'
1135 |     /// considered equivalent and turn off this behavior.
1136 |     public var ellipsis: String?
warning: 'pop' doesn't exist at '/Shaft/ParagraphBuilder/pushStyle(_:)'
    --> Sources/Shaft/Core/TextTypes.swift:1156:59-1156:62
1154 |
1155 | public protocol ParagraphBuilder: AnyObject {
1156 +     /// Applies the given style to the added text until ``pop`` is called.
1157 |     ///
1158 |     /// See ``pop`` for details.
warning: 'pop' doesn't exist at '/Shaft/ParagraphBuilder/pushStyle(_:)'
    --> Sources/Shaft/Core/TextTypes.swift:1158:15-1158:18
1156 |     /// Applies the given style to the added text until ``pop`` is called.
1157 |     ///
1158 +     /// See ``pop`` for details.
1159 |     func pushStyle(_ style: SpanStyle)
1160 |
warning: 'pushStyle' doesn't exist at '/Shaft/ParagraphBuilder/pop()'
    --> Sources/Shaft/Core/TextTypes.swift:1161:54-1161:63
1159 |     func pushStyle(_ style: SpanStyle)
1160 |
1161 +     /// Ends the effect of the most recent call to ``pushStyle``.
1162 |     ///
1163 |     /// Internally, the paragraph builder maintains a stack of text styles. Text
warning: 'pop' doesn't exist at '/Shaft/ParagraphBuilder/pop()'
    --> Sources/Shaft/Core/TextTypes.swift:1165:19-1165:22
1163 |     /// Internally, the paragraph builder maintains a stack of text styles. Text
1164 |     /// added to the paragraph is affected by all the styles in the stack.
1165 +     /// Calling ``pop`` removes the topmost style in the stack, leaving the
1166 |     /// remaining styles in effect.
1167 |     func pop()
warning: 'layout' doesn't exist at '/Shaft/Paragraph'
    --> Sources/Shaft/Core/TextTypes.swift:1184:65-1184:71
1182 | /// Layout constraints for ``Paragraph`` objects.
1183 | ///
1184 + /// Instances of this class are typically used with ``Paragraph/layout``.
     |                                                                 ╰─suggestion: Replace 'layout' with 'layout(_:)'
1185 | ///
1186 | /// The only constraint that can be specified is the ``width``. See the discussion
warning: 'width' doesn't exist at '/Shaft/ParagraphConstraints'
    --> Sources/Shaft/Core/TextTypes.swift:1186:56-1186:61
1184 | /// Instances of this class are typically used with ``Paragraph/layout``.
1185 | ///
1186 + /// The only constraint that can be specified is the ``width``. See the discussion
     |                                                        ╰─suggestion: Replace 'width' with 'width(_:)'
1187 | /// at ``width`` for more details.
1188 | public enum ParagraphConstraints: Equatable {
warning: 'width' doesn't exist at '/Shaft/ParagraphConstraints'
    --> Sources/Shaft/Core/TextTypes.swift:1187:10-1187:15
1185 | ///
1186 | /// The only constraint that can be specified is the ``width``. See the discussion
1187 + /// at ``width`` for more details.
     |          ╰─suggestion: Replace 'width' with 'width(_:)'
1188 | public enum ParagraphConstraints: Equatable {
1189 |     /// The width the paragraph should use whey computing the positions of glyphs.
warning: 'new' doesn't exist at '/Shaft/ParagraphStyle'
    --> Sources/Shaft/Core/TextTypes.swift:1201:26-1201:29
1199 |     ///
1200 |     /// The width influences how ellipses are applied. See the discussion at
1201 +     /// ``ParagraphStyle/new`` for more details.
1202 |     ///
1203 |     /// This width is also used to position glyphs according to the ``TextAlign``
warning: 'getBoxesForRange' doesn't exist at '/Shaft/Paragraph'
    --> Sources/Shaft/Core/TextTypes.swift:1210:17-1210:33
1208 |
1209 | /// Defines various ways to horizontally bound the boxes returned by
1210 + /// ``Paragraph/getBoxesForRange``.
     |                 ├─suggestion: Replace 'getBoxesForRange' with 'getBoxesForRange(_:_:boxHeightStyle:boxWidthStyle:)'
     |                 ╰─suggestion: Replace 'getBoxesForRange' with 'getBoxesForPlaceholders()'
1211 | ///
1212 | /// See ``BoxHeightStyle`` for a similar property to control height.
warning: 'getBoxesForRange' doesn't exist at '/Shaft/Paragraph'
    --> Sources/Shaft/Core/TextTypes.swift:1229:17-1229:33
1227 |
1228 | /// Defines various ways to vertically bound the boxes returned by
1229 + /// ``Paragraph/getBoxesForRange``.
     |                 ├─suggestion: Replace 'getBoxesForRange' with 'getBoxesForRange(_:_:boxHeightStyle:boxWidthStyle:)'
     |                 ╰─suggestion: Replace 'getBoxesForRange' with 'getBoxesForPlaceholders()'
1230 | ///
1231 | /// See ``BoxWidthStyle`` for a similar property to control width.
warning: 'drawParagraph' doesn't exist at '/Shaft/Canvas'
    --> Sources/Shaft/Core/TextTypes.swift:1286:68-1286:81
1284 | /// To create a ``Paragraph`` object, use a ``ParagraphBuilder``.
1285 | ///
1286 + /// Paragraphs can be displayed on a ``Canvas`` using the ``Canvas/drawParagraph``
1287 | /// method.
1288 | public protocol Paragraph: AnyObject {
warning: 'layout' doesn't exist at '/Shaft/Paragraph/width'
    --> Sources/Shaft/Core/TextTypes.swift:1291:28-1291:34
1289 |     /// The amount of horizontal space this paragraph occupies.
1290 |     ///
1291 +     /// Valid only after ``layout`` has been called.
1292 |     var width: Float { get }
1293 |
warning: 'layout' doesn't exist at '/Shaft/Paragraph/height'
    --> Sources/Shaft/Core/TextTypes.swift:1296:28-1296:34
1294 |     /// The amount of vertical space this paragraph occupies.
1295 |     ///
1296 +     /// Valid only after ``layout`` has been called.
1297 |     var height: Float { get }
1298 |
warning: 'layout' doesn't exist at '/Shaft/Paragraph/longestLine'
    --> Sources/Shaft/Core/TextTypes.swift:1302:28-1302:34
1300 |     /// the rightmost glyph in the paragraph.
1301 |     ///
1302 +     /// Valid only after ``layout`` has been called.
1303 |     var longestLine: Float { get }
1304 |
warning: 'layout' doesn't exist at '/Shaft/Paragraph/minIntrinsicWidth'
    --> Sources/Shaft/Core/TextTypes.swift:1308:28-1308:34
1306 |     /// its contents within itself.
1307 |     ///
1308 +     /// Valid only after ``layout`` has been called.
1309 |     var minIntrinsicWidth: Float { get }
1310 |
warning: 'layout' doesn't exist at '/Shaft/Paragraph/maxIntrinsicWidth'
    --> Sources/Shaft/Core/TextTypes.swift:1314:28-1314:34
1312 |     /// decreases the height.
1313 |     ///
1314 +     /// Valid only after ``layout`` has been called.
1315 |     var maxIntrinsicWidth: Float { get }
1316 |
warning: 'new' doesn't exist at '/Shaft/ParagraphStyle'
    --> Sources/Shaft/Core/TextTypes.swift:1331:26-1331:29
1329 |     ///
1330 |     /// See the discussion of the `maxLines` and `ellipsis` arguments at
1331 +     /// ``ParagraphStyle/new``.
1332 |     var didExceedMaxLines: Bool { get }
1333 |
warning: 'boxHeightStyle' doesn't exist at '/Shaft/Paragraph/getBoxesForRange(_:_:boxHeightStyle:boxWidthStyle:)'
    --> Sources/Shaft/Core/TextTypes.swift:1341:15-1341:29
1339 |     /// Returns a list of text boxes that enclose the given text range.
1340 |     ///
1341 +     /// The ``boxHeightStyle`` and ``boxWidthStyle`` parameters allow customization
1342 |     /// of how the boxes are bound vertically and horizontally. Both style
1343 |     /// parameters default to the tight option, which will provide close-fitting
warning: 'boxWidthStyle' doesn't exist at '/Shaft/Paragraph/getBoxesForRange(_:_:boxHeightStyle:boxWidthStyle:)'
    --> Sources/Shaft/Core/TextTypes.swift:1341:38-1341:51
1339 |     /// Returns a list of text boxes that enclose the given text range.
1340 |     ///
1341 +     /// The ``boxHeightStyle`` and ``boxWidthStyle`` parameters allow customization
1342 |     /// of how the boxes are bound vertically and horizontally. Both style
1343 |     /// parameters default to the tight option, which will provide close-fitting
warning: 'boxHeightStyle' doesn't exist at '/Shaft/Paragraph/getBoxesForRange(_:_:boxHeightStyle:boxWidthStyle:)'
    --> Sources/Shaft/Core/TextTypes.swift:1349:15-1349:29
1347 |     /// where positive y values indicate down.
1348 |     ///
1349 +     /// The ``boxHeightStyle`` and ``boxWidthStyle`` parameters must not be null.
1350 |     ///
1351 |     /// See ``BoxHeightStyle`` and ``BoxWidthStyle`` for full descriptions of each option.
warning: 'boxWidthStyle' doesn't exist at '/Shaft/Paragraph/getBoxesForRange(_:_:boxHeightStyle:boxWidthStyle:)'
    --> Sources/Shaft/Core/TextTypes.swift:1349:38-1349:51
1347 |     /// where positive y values indicate down.
1348 |     ///
1349 +     /// The ``boxHeightStyle`` and ``boxWidthStyle`` parameters must not be null.
1350 |     ///
1351 |     /// See ``BoxHeightStyle`` and ``BoxWidthStyle`` for full descriptions of each option.
warning: 'addPlaceholder' doesn't exist at '/Shaft/ParagraphBuilder'
    --> Sources/Shaft/Core/TextTypes.swift:1362:28-1362:42
1360 |     ///
1361 |     /// The order of the boxes are in the same order as passed in through
1362 +     /// ``ParagraphBuilder/addPlaceholder``.
1363 |     ///
1364 |     /// Coordinates of the ``TextBox`` are relative to the upper-left corner of the paragraph,
warning: 'getBoxesForRange' doesn't exist at '/Shaft/Paragraph'
    --> Sources/Shaft/Core/TextTypes.swift:1460:46-1460:62
1458 | /// The measurements here are for the line as a whole, and represent the maximum
1459 | /// extent of the line instead of per-run or per-glyph metrics. For more detailed
1460 + /// metrics, see ``TextBox`` and ``Paragraph/getBoxesForRange``.
     |                                              ├─suggestion: Replace 'getBoxesForRange' with 'getBoxesForRange(_:_:boxHeightStyle:boxWidthStyle:)'
     |                                              ╰─suggestion: Replace 'getBoxesForRange' with 'getBoxesForPlaceholders()'
1461 | ///
1462 | /// ``LineMetrics`` should be obtained directly from the [Paragraph.computeLineMetrics]
warning: 'addPlaceholder' doesn't exist at '/Shaft/ParagraphBuilder'
    --> Sources/Shaft/Core/TextTypes.swift:1576:32-1576:46
1574 | /// Where to vertically align the placeholder relative to the surrounding text.
1575 | ///
1576 + /// Used by ``ParagraphBuilder/addPlaceholder``.
1577 | public enum PlaceholderAlignment {
1578 |     /// Match the baseline of the placeholder with the baseline.
warning: 'ValueSetter' doesn't exist at '/Shaft/ValueChanged'
  --> Sources/Shaft/Foundation/Callback.swift:20:10-20:21
18 | /// See also:
19 | ///
20 + ///  * ``ValueSetter``, for callbacks that report that a value has been set.
21 | public typealias ValueChanged<T> = (T) -> Void
22 |
warning: 'transform' doesn't exist at '/Shaft/MatrixUtils/getAsTranslation(_:)'
  --> Sources/Shaft/Foundation/MatrixUtils.swift:8:29-8:38
6  |
7  | public struct MatrixUtils {
8  +     /// Returns the given ``transform`` matrix as an ``Offset``, if the matrix is
9  |     /// nothing but a 2D translation.
10 |     ///
warning: 'transform' doesn't exist at '/Shaft/MatrixUtils/getAsScale(_:)'
  --> Sources/Shaft/Foundation/MatrixUtils.swift:34:29-34:38
32 |     }
33 |
34 +     /// Returns the given ``transform`` matrix as a ``double`` describing a uniform
35 |     /// scale, if the matrix is nothing but a symmetric 2D scale transform.
36 |     ///
warning: 'double' doesn't exist at '/Shaft/MatrixUtils/getAsScale(_:)'
  --> Sources/Shaft/Foundation/MatrixUtils.swift:34:55-34:61
32 |     }
33 |
34 +     /// Returns the given ``transform`` matrix as a ``double`` describing a uniform
35 |     /// scale, if the matrix is nothing but a symmetric 2D scale transform.
36 |     ///
warning: 'angle' doesn't exist at '/Shaft/SwiftMath/Matrix4x4f/rotateX(_:)'
   --> Sources/Shaft/Foundation/MatrixUtils.swift:544:23-544:28
542 |     }
543 |
544 +     /// Rotate this ``angle`` radians around X
545 |     public mutating func rotateX(_ angle: Angle) {
546 |         let (sin:sinAngle, cos:cosAngle) = sincos(angle)
warning: 'angle' doesn't exist at '/Shaft/SwiftMath/Matrix4x4f/rotateY(_:)'
   --> Sources/Shaft/Foundation/MatrixUtils.swift:566:30-566:35
564 |     }
565 |
566 +     /// Rotate this matrix ``angle`` radians around Y
567 |     public mutating func rotateY(_ angle: Angle) {
568 |         let (sin:sinAngle, cos:cosAngle) = sincos(angle)
warning: 'angle' doesn't exist at '/Shaft/SwiftMath/Matrix4x4f/rotateZ(_:)'
   --> Sources/Shaft/Foundation/MatrixUtils.swift:588:30-588:35
586 |     }
587 |
588 +     /// Rotate this matrix ``angle`` radians around Z
589 |     public mutating func rotateZ(_ angle: Angle) {
590 |         let (sin:sinAngle, cos:cosAngle) = sincos(angle)
warning: 'Vector3' doesn't exist at '/Shaft/SwiftMath/Matrix4x4f/scale(_:)'
   --> Sources/Shaft/Foundation/MatrixUtils.swift:636:34-636:41
634 |     }
635 |
636 +     /// Scale this matrix by a ``Vector3``
637 |     public mutating func scale(_ vector: Vector3f) {
638 |         scale(vector.x, vector.y, vector.z)
warning: 'angle' doesn't exist at '/Shaft/SwiftMath/Matrix4x4f/rotate(_:_:)'
   --> Sources/Shaft/Foundation/MatrixUtils.swift:646:23-646:28
644 |     }
645 |
646 +     /// Rotate this ``angle`` radians around [axis]
647 |     public mutating func rotate(_ axis: Vector3f, _ angle: Angle) {
648 |         let len = axis.length
warning: 'Vector3' doesn't exist at '/Shaft/SwiftMath/Matrix4x4f/translate(_:)'
   --> Sources/Shaft/Foundation/MatrixUtils.swift:708:38-708:45
706 |     }
707 |
708 +     /// Translate this matrix by a ``Vector3``
709 |     public mutating func translate(_ vector: Vector3f) {
710 |         translate(vector.x, vector.y, vector.z)
warning: 'DateTime' doesn't exist at '/Shaft/Swift/Duration/secondsPerMinute'
  --> Sources/Shaft/Foundation/Time.swift:30:32-30:40
28 |     /// Notice that some minutes of official clock time might
29 |     /// differ in length because of leap seconds.
30 +     /// The ``Duration`` and ``DateTime`` classes ignore leap seconds
31 |     /// and consider all minutes to have 60 seconds.
32 |     public static var secondsPerMinute = 60
warning: 'acceptGesture' doesn't exist at '/Shaft/GestureArenaMember'
  --> Sources/Shaft/Gestures/Arena.swift:21:54-21:67
19 | ///
20 | /// Receives callbacks from the GestureArena to notify the object when it wins
21 + /// or loses a gesture negotiation. Exactly one of ``acceptGesture`` or
   |                                                      ╰─suggestion: Replace 'acceptGesture' with 'acceptGesture(pointer:)'
22 | /// ``rejectGesture`` will be called for each arena this member was added to,
23 | /// regardless of what caused the arena to be resolved. For example, if a
warning: 'rejectGesture' doesn't exist at '/Shaft/GestureArenaMember'
  --> Sources/Shaft/Gestures/Arena.swift:22:7-22:20
20 | /// Receives callbacks from the GestureArena to notify the object when it wins
21 | /// or loses a gesture negotiation. Exactly one of ``acceptGesture`` or
22 + /// ``rejectGesture`` will be called for each arena this member was added to,
   |       ╰─suggestion: Replace 'rejectGesture' with 'rejectGesture(pointer:)'
23 | /// regardless of what caused the arena to be resolved. For example, if a
24 | /// member resolves the arena itself, that member still receives an
warning: 'acceptGesture' doesn't exist at '/Shaft/GestureArenaMember'
  --> Sources/Shaft/Gestures/Arena.swift:25:7-25:20
23 | /// regardless of what caused the arena to be resolved. For example, if a
24 | /// member resolves the arena itself, that member still receives an
25 + /// ``acceptGesture`` callback.
   |       ╰─suggestion: Replace 'acceptGesture' with 'acceptGesture(pointer:)'
26 | public protocol GestureArenaMember: AnyObject {
27 |     /// Called when this member wins the arena for the given pointer id.
warning: 'hold' doesn't exist at '/Shaft/GestureArenaManager/sweep(_:)'
   --> Sources/Shaft/Gestures/Arena.swift:112:23-112:27
110 |     ///
111 |     /// Recognizers that wish to delay resolving an arena past ``PointerUpEvent``
112 +     /// should call ``hold`` to delay sweep until ``release`` is called.
113 |     ///
114 |     /// See also:
warning: 'release' doesn't exist at '/Shaft/GestureArenaManager/sweep(_:)'
   --> Sources/Shaft/Gestures/Arena.swift:112:53-112:60
110 |     ///
111 |     /// Recognizers that wish to delay resolving an arena past ``PointerUpEvent``
112 +     /// should call ``hold`` to delay sweep until ``release`` is called.
113 |     ///
114 |     /// See also:
warning: 'hold' doesn't exist at '/Shaft/GestureArenaManager/sweep(_:)'
   --> Sources/Shaft/Gestures/Arena.swift:116:14-116:18
114 |     /// See also:
115 |     ///
116 +     ///  * ``hold``
117 |     ///  * ``release``
118 |     public func sweep(_ pointer: Int) {
warning: 'release' doesn't exist at '/Shaft/GestureArenaManager/sweep(_:)'
   --> Sources/Shaft/Gestures/Arena.swift:117:14-117:21
115 |     ///
116 |     ///  * ``hold``
117 +     ///  * ``release``
118 |     public func sweep(_ pointer: Int) {
119 |         guard let state = arenas[pointer] else {
warning: 'hold' doesn't exist at '/Shaft/GestureArenaManager/hold(_:)'
   --> Sources/Shaft/Gestures/Arena.swift:142:74-142:78
140 |     /// Typically, a winner is chosen in an arena after all the other
141 |     /// ``PointerUpEvent`` processing by [sweep]. If a recognizer wishes to delay
142 +     /// resolving an arena past ``PointerUpEvent``, the recognizer can ``hold`` the
143 |     /// arena open using this function. To release such a hold and let the arena
144 |     /// resolve, call ``release``.
warning: 'release' doesn't exist at '/Shaft/GestureArenaManager/hold(_:)'
   --> Sources/Shaft/Gestures/Arena.swift:144:25-144:32
142 |     /// resolving an arena past ``PointerUpEvent``, the recognizer can ``hold`` the
143 |     /// arena open using this function. To release such a hold and let the arena
144 +     /// resolve, call ``release``.
145 |     ///
146 |     /// See also:
warning: 'release' doesn't exist at '/Shaft/GestureArenaManager/hold(_:)'
   --> Sources/Shaft/Gestures/Arena.swift:149:14-149:21
147 |     ///
148 |     ///  * [sweep]
149 +     ///  * ``release``
150 |     public func hold(_ pointer: Int) {
151 |         guard let state = arenas[pointer] else {
warning: 'hold' doesn't exist at '/Shaft/GestureArenaManager/release(_:)'
   --> Sources/Shaft/Gestures/Arena.swift:165:14-165:18
163 |     ///
164 |     ///  * [sweep]
165 +     ///  * ``hold``
166 |     public func release(_ pointer: Int) {
167 |         guard let state = arenas[pointer] else {
warning: 'localDelta' doesn't exist at '/Shaft/PointerEvent/transform'
   --> Sources/Shaft/Gestures/PointerEvents.swift:105:72-105:82
103 |     /// space into the coordinate space of the event receiver.
104 |     ///
105 +     /// This value affects what is returned by ``localPosition`` and ``localDelta``.
106 |     /// If this value is null, it is treated as the identity transformation.
107 |     public let transform: Matrix4x4f?
warning: 'route' doesn't exist at '/Shaft/PointerRouter'
  --> Sources/Shaft/Gestures/PointerRouter.swift:82:57-82:62
80 |     /// pointer, call route.
81 |     ///
82 +     /// Routes added reentrantly within ``PointerRouter/route`` will take effect when
   |                                                         ╰─suggestion: Replace 'route' with 'route(_:)'
83 |     /// routing the next event.
84 |     public func addRoute(
warning: 'route' doesn't exist at '/Shaft/PointerRouter'
   --> Sources/Shaft/Gestures/PointerRouter.swift:99:59-99:64
97  |     /// pointer. Requires that this route was previously added to the router.
98  |     ///
99  +     /// Routes removed reentrantly within ``PointerRouter/route`` will take effect
    |                                                           ╰─suggestion: Replace 'route' with 'route(_:)'
100 |     /// immediately.
101 |     public func removeRoute(_ pointer: Int, _ handler: PointerRoute) {
warning: 'route' doesn't exist at '/Shaft/PointerRouter'
   --> Sources/Shaft/Gestures/PointerRouter.swift:115:57-115:62
113 |     /// Whenever this object routes a ``PointerEvent``, call route.
114 |     ///
115 +     /// Routes added reentrantly within ``PointerRouter/route`` will take effect when
    |                                                         ╰─suggestion: Replace 'route' with 'route(_:)'
116 |     /// routing the next event.
117 |     public func addGlobalRoute(
warning: 'addGlobalRoute' doesn't exist at '/Shaft/PointerRouter/removeGlobalRoute(_:)'
   --> Sources/Shaft/Gestures/PointerRouter.swift:128:42-128:56
126 |     ///
127 |     /// No longer call route when routing a ``PointerEvent``. Requires that this
128 +     /// route was previously added via ``addGlobalRoute``.
129 |     ///
130 |     /// Routes removed reentrantly within ``PointerRouter/route`` will take effect
warning: 'route' doesn't exist at '/Shaft/PointerRouter'
   --> Sources/Shaft/Gestures/PointerRouter.swift:130:59-130:64
128 |     /// route was previously added via ``addGlobalRoute``.
129 |     ///
130 +     /// Routes removed reentrantly within ``PointerRouter/route`` will take effect
    |                                                           ╰─suggestion: Replace 'route' with 'route(_:)'
131 |     /// immediately.
132 |     public func removeGlobalRoute(_ handler: PointerRoute) {
warning: 'isPointerAllowed' doesn't exist at '/Shaft/BaseTapGestureRecognizer'
   --> Sources/Shaft/Gestures/Recongnizer/TapRecongnizer.swift:118:7-118:23
116 | /// define which buttons to accept, or what to do when a tap happens. If you
117 | /// want to build a custom tap recognizer, extend this class by overriding
118 + /// ``isPointerAllowed`` and the handler methods.
119 | ///
120 | /// See also:
warning: 'minValue' doesn't exist at '/Shaft/Velocity/clampMagnitude(minValue:maxValue:)'
  --> Sources/Shaft/Gestures/VelocityTracker.swift:43:65-43:73
41 |     }
42 |
43 +     /// Return a velocity whose magnitude has been clamped to ``minValue``
44 |     /// and ``maxValue``.
45 |     ///
warning: 'maxValue' doesn't exist at '/Shaft/Velocity/clampMagnitude(minValue:maxValue:)'
  --> Sources/Shaft/Gestures/VelocityTracker.swift:44:15-44:23
42 |
43 |     /// Return a velocity whose magnitude has been clamped to ``minValue``
44 +     /// and ``maxValue``.
45 |     ///
46 |     /// If the magnitude of this Velocity is less than minValue then return a new
warning: 'minValue' doesn't exist at '/Shaft/Velocity/clampMagnitude(minValue:maxValue:)'
  --> Sources/Shaft/Gestures/VelocityTracker.swift:47:63-47:71
45 |     ///
46 |     /// If the magnitude of this Velocity is less than minValue then return a new
47 +     /// Velocity with the same direction and with magnitude ``minValue``. Similarly,
48 |     /// if the magnitude of this Velocity is greater than maxValue then return a
49 |     /// new Velocity with the same direction and magnitude ``maxValue``.
warning: 'maxValue' doesn't exist at '/Shaft/Velocity/clampMagnitude(minValue:maxValue:)'
  --> Sources/Shaft/Gestures/VelocityTracker.swift:49:62-49:70
47 |     /// Velocity with the same direction and with magnitude ``minValue``. Similarly,
48 |     /// if the magnitude of this Velocity is greater than maxValue then return a
49 +     /// new Velocity with the same direction and magnitude ``maxValue``.
50 |     ///
51 |     /// If the magnitude of this Velocity is within the specified bounds then
warning: 'addPosition' doesn't exist at '/Shaft/VelocityTracker'
   --> Sources/Shaft/Gestures/VelocityTracker.swift:133:45-133:56
131 | /// Computes a pointer's velocity based on data from ``PointerMoveEvent``s.
132 | ///
133 + /// The input data is provided by calling ``addPosition``. Adding data is cheap.
    |                                             ╰─suggestion: Replace 'addPosition' with 'addPosition(_:_:)'
134 | ///
135 | /// To obtain a velocity, call ``getVelocity`` or ``getVelocityEstimate``. This will
warning: 'getVelocity' doesn't exist at '/Shaft/VelocityTracker'
   --> Sources/Shaft/Gestures/VelocityTracker.swift:135:34-135:45
133 | /// The input data is provided by calling ``addPosition``. Adding data is cheap.
134 | ///
135 + /// To obtain a velocity, call ``getVelocity`` or ``getVelocityEstimate``. This will
    |                                  ├─suggestion: Replace 'getVelocity' with 'getVelocity()'
    |                                  ╰─suggestion: Replace 'getVelocity' with 'getVelocityEstimate()'
136 | /// compute the velocity based on the data added so far. Only call these when
137 | /// you need to use the velocity, as they are comparatively expensive.
warning: 'getVelocityEstimate' doesn't exist at '/Shaft/VelocityTracker'
   --> Sources/Shaft/Gestures/VelocityTracker.swift:135:53-135:72
133 | /// The input data is provided by calling ``addPosition``. Adding data is cheap.
134 | ///
135 + /// To obtain a velocity, call ``getVelocity`` or ``getVelocityEstimate``. This will
    |                                                     ├─suggestion: Replace 'getVelocityEstimate' with 'getVelocityEstimate()'
    |                                                     ╰─suggestion: Replace 'getVelocityEstimate' with 'getVelocity()'
136 | /// compute the velocity based on the data added so far. Only call these when
137 | /// you need to use the velocity, as they are comparatively expensive.
warning: 'addPosition' doesn't exist at '/Shaft/VelocityTracker/getVelocityEstimate()'
   --> Sources/Shaft/Gestures/VelocityTracker.swift:178:38-178:49
176 |     /// tracker given the current information available to the tracker.
177 |     ///
178 +     /// Information is added using ``addPosition``.
179 |     ///
180 |     /// Returns nil if there is no data on which to base an estimate.
warning: 'AlignmentDirectional' doesn't exist at '/Shaft/AlignmentGeometry'
  --> Sources/Shaft/Painting/Alignment.swift:12:39-12:59
10 | ///
11 | /// A property or argument of this type accepts classes created either with [
12 + /// Alignment] and its variants, or ``AlignmentDirectional/new``.
13 | ///
14 | /// To convert an ``AlignmentGeometry`` object of indeterminate type into an
warning: 'resolve' doesn't exist at '/Shaft/AlignmentGeometry'
  --> Sources/Shaft/Painting/Alignment.swift:15:38-15:45
13 | ///
14 | /// To convert an ``AlignmentGeometry`` object of indeterminate type into an
15 + /// ``Alignment`` object, call the ``resolve`` method.
   |                                      ╰─suggestion: Replace 'resolve' with 'resolve(_:)'
16 | public protocol AlignmentGeometry: Equatable {
17 |     func resolve(_ direction: TextDirection) -> Alignment
warning: 'AlignmentDirectional' doesn't exist at '/Shaft/Alignment'
  --> Sources/Shaft/Painting/Alignment.swift:47:39-47:59
45 | /// ``Alignment`` uses visual coordinates, which means increasing ``x`` moves the
46 | /// point from left to right. To support layouts with a right-to-left
47 + /// [TextDirection], consider using ``AlignmentDirectional``, in which the
   |                                       ╰─suggestion: Replace 'AlignmentDirectional' with 'AlignmentGeometry-Implementations'
48 | /// direction the point moves when increasing the horizontal value depends on
49 | /// the [TextDirection].
warning: 'compareTo' doesn't exist at '/Shaft/TextSpan'
  --> Sources/Shaft/Painting/BasicTypes.swift:12:24-12:33
10 | /// it will affect the rendering.
11 | ///
12 + /// Used by ``TextSpan/compareTo`` and ``TextStyle/compareTo``.
   |                        ╰─suggestion: Replace 'compareTo' with 'compareTo(_:)'
13 | ///
14 | /// The values in this enum are ordered such that they are in increasing order
warning: 'compareTo' doesn't exist at '/Shaft/TextStyle'
  --> Sources/Shaft/Painting/BasicTypes.swift:12:52-12:61
10 | /// it will affect the rendering.
11 | ///
12 + /// Used by ``TextSpan/compareTo`` and ``TextStyle/compareTo``.
13 | ///
14 | /// The values in this enum are ordered such that they are in increasing order
warning: 'markNeedsPaint' doesn't exist at '/Shaft/RenderObject'
  --> Sources/Shaft/Painting/BasicTypes.swift:32:24-32:38
30 |     /// For example, only the color is changed.
31 |     ///
32 +     /// ``RenderObject/markNeedsPaint`` would be necessary to handle this kind of
   |                        ├─suggestion: Replace 'markNeedsPaint' with 'markNeedsPaint()'
   |                        ╰─suggestion: Replace 'markNeedsPaint' with 'markNeedsLayout()'
33 |     /// change in a render object.
34 |     case paint
warning: 'markNeedsLayout' doesn't exist at '/Shaft/RenderObject'
  --> Sources/Shaft/Painting/BasicTypes.swift:42:24-42:39
40 |     /// This is the most drastic level of change possible.
41 |     ///
42 +     /// ``RenderObject/markNeedsLayout`` would be necessary to handle this kind of
   |                        ├─suggestion: Replace 'markNeedsLayout' with 'markNeedsLayout()'
   |                        ├─suggestion: Replace 'markNeedsLayout' with 'markParentNeedsLayout()'
   |                        ├─suggestion: Replace 'markNeedsLayout' with 'markNeedsPaint()'
   |                        ╰─suggestion: Replace 'markNeedsLayout' with 'markNeedsCompositedLayerUpdate()'
43 |     /// change in a render object.
44 |     case layout
warning: 'canMerge' doesn't exist at '/Shaft/BorderSide/merge(_:_:)'
  --> Sources/Shaft/Painting/Borders.swift:46:44-46:52
44 |     /// ``BorderSide``s.
45 |     ///
46 +     /// It is only valid to call this if ``canMerge`` returns true for the two
47 |     /// sides.
48 |     ///
warning: 'ShapeDecoration' doesn't exist at '/Shaft/BoxShape'
  --> Sources/Shaft/Painting/BoxBorder.swift:11:64-11:79
9  | /// The shape to use when rendering a ``Border`` or ``BoxDecoration``.
10 | ///
11 + /// Consider using ``ShapeBorder`` subclasses directly (with ``ShapeDecoration``),
12 | /// instead of using ``BoxShape`` and ``Border``, if the shapes will need to be
13 | /// interpolated or animated. The ``Border`` class cannot interpolate between
warning: 'RoundedRectangleBorder' doesn't exist at '/Shaft/BoxShape/rectangle'
  --> Sources/Shaft/Painting/BoxBorder.swift:22:14-22:36
20 |     /// See also:
21 |     ///
22 +     ///  * ``RoundedRectangleBorder``, the equivalent ``ShapeBorder``.
23 |     case rectangle
24 |
warning: 'border' doesn't exist at '/Shaft/BoxDecoration'
  --> Sources/Shaft/Painting/BoxDecoration.swift:13:21-13:27
11 | /// The ``BoxDecoration`` class provides a variety of ways to draw a box.
12 | ///
13 + /// The box has a ``border``, a body, and may cast a ``boxShadow``.
14 | ///
15 | /// The ``shape`` of the box can be a circle or a rectangle. If it is a rectangle,
warning: 'boxShadow' doesn't exist at '/Shaft/BoxDecoration'
  --> Sources/Shaft/Painting/BoxDecoration.swift:13:56-13:65
11 | /// The ``BoxDecoration`` class provides a variety of ways to draw a box.
12 | ///
13 + /// The box has a ``border``, a body, and may cast a ``boxShadow``.
14 | ///
15 | /// The ``shape`` of the box can be a circle or a rectangle. If it is a rectangle,
warning: 'shape' doesn't exist at '/Shaft/BoxDecoration'
  --> Sources/Shaft/Painting/BoxDecoration.swift:15:11-15:16
13 | /// The box has a ``border``, a body, and may cast a ``boxShadow``.
14 | ///
15 + /// The ``shape`` of the box can be a circle or a rectangle. If it is a rectangle,
16 | /// then the ``borderRadius`` property controls the roundness of the corners.
17 | ///
warning: 'borderRadius' doesn't exist at '/Shaft/BoxDecoration'
  --> Sources/Shaft/Painting/BoxDecoration.swift:16:16-16:28
14 | ///
15 | /// The ``shape`` of the box can be a circle or a rectangle. If it is a rectangle,
16 + /// then the ``borderRadius`` property controls the roundness of the corners.
17 | ///
18 | /// The body of the box is painted in layers. The bottom-most layer is the
warning: 'color' doesn't exist at '/Shaft/BoxDecoration'
  --> Sources/Shaft/Painting/BoxDecoration.swift:19:7-19:12
17 | ///
18 | /// The body of the box is painted in layers. The bottom-most layer is the
19 + /// ``color``, which fills the box. Above that is the ``gradient``, which also fills
20 | /// the box. Finally there is the ``image``, the precise alignment of which is
21 | /// controlled by the ``DecorationImage`` class.
warning: 'gradient' doesn't exist at '/Shaft/BoxDecoration'
  --> Sources/Shaft/Painting/BoxDecoration.swift:19:57-19:65
17 | ///
18 | /// The body of the box is painted in layers. The bottom-most layer is the
19 + /// ``color``, which fills the box. Above that is the ``gradient``, which also fills
20 | /// the box. Finally there is the ``image``, the precise alignment of which is
21 | /// controlled by the ``DecorationImage`` class.
warning: 'image' doesn't exist at '/Shaft/BoxDecoration'
  --> Sources/Shaft/Painting/BoxDecoration.swift:20:37-20:42
18 | /// The body of the box is painted in layers. The bottom-most layer is the
19 | /// ``color``, which fills the box. Above that is the ``gradient``, which also fills
20 + /// the box. Finally there is the ``image``, the precise alignment of which is
21 | /// controlled by the ``DecorationImage`` class.
22 | ///
warning: 'DecorationImage' doesn't exist at '/Shaft/BoxDecoration'
  --> Sources/Shaft/Painting/BoxDecoration.swift:21:25-21:40
19 | /// ``color``, which fills the box. Above that is the ``gradient``, which also fills
20 | /// the box. Finally there is the ``image``, the precise alignment of which is
21 + /// controlled by the ``DecorationImage`` class.
   |                         ╰─suggestion: Replace 'DecorationImage' with 'Decoration-Implementations'
22 | ///
23 | /// The ``border`` paints over the body; the ``boxShadow``, naturally, paints below it.
warning: 'border' doesn't exist at '/Shaft/BoxDecoration'
  --> Sources/Shaft/Painting/BoxDecoration.swift:23:11-23:17
21 | /// controlled by the ``DecorationImage`` class.
22 | ///
23 + /// The ``border`` paints over the body; the ``boxShadow``, naturally, paints below it.
24 | public class BoxDecoration: Decoration {
25 |     public init(
warning: 'boxShadow' doesn't exist at '/Shaft/BoxDecoration'
  --> Sources/Shaft/Painting/BoxDecoration.swift:23:48-23:57
21 | /// controlled by the ``DecorationImage`` class.
22 | ///
23 + /// The ``border`` paints over the body; the ``boxShadow``, naturally, paints below it.
24 | public class BoxDecoration: Decoration {
25 |     public init(
warning: 'WidgetSpan' doesn't exist at '/Shaft/PlaceholderDimensions'
  --> Sources/Shaft/Painting/TextPainter.swift:52:66-52:76
50 | ///
51 | /// Placeholders specify an empty space in the text layout, which is used
52 + /// to later render arbitrary inline widgets into defined by a ``WidgetSpan``.
53 | ///
54 | /// See also:
warning: 'WidgetSpan' doesn't exist at '/Shaft/PlaceholderDimensions'
  --> Sources/Shaft/Painting/TextPainter.swift:56:10-56:20
54 | /// See also:
55 | ///
56 + ///  * ``WidgetSpan``, a subclass of ``InlineSpan`` and ``PlaceholderSpan`` that
57 | ///    represents an inline widget embedded within text. The space this
58 | ///    widget takes is indicated by a placeholder.
warning: 'WidgetSpan' doesn't exist at '/Shaft/TextPainter/text'
   --> Sources/Shaft/Painting/TextPainter.swift:161:49-161:59
159 |     ///
160 |     /// The ``InlineSpan`` this provides is in the form of a tree that may contain
161 +     /// multiple instances of [TextSpan]s and ``WidgetSpan``s. To obtain a plain text
162 |     /// representation of the contents of this [TextPainter], use [plainText].
163 |     public var text: InlineSpan? {
warning: 'merge' doesn't exist at '/Shaft/TextStyle/inherit'
  --> Sources/Shaft/Painting/TextStyle.swift:62:42-62:47
60 |
61 |     /// Whether null values in this ``TextStyle`` can be replaced with their value
62 +     /// in another ``TextStyle`` using ``merge``.
63 |     ///
64 |     /// The ``merge`` operation is not commutative: the ``inherit`` value of the
warning: 'merge' doesn't exist at '/Shaft/TextStyle/inherit'
  --> Sources/Shaft/Painting/TextStyle.swift:64:15-64:20
62 |     /// in another ``TextStyle`` using ``merge``.
63 |     ///
64 +     /// The ``merge`` operation is not commutative: the ``inherit`` value of the
65 |     /// method argument decides whether the two ``TextStyle``s can be combined
66 |     /// together. If it is false, the method argument ``TextStyle`` will be returned.
warning: 'merge' doesn't exist at '/Shaft/TextStyle/color'
  --> Sources/Shaft/Painting/TextStyle.swift:89:14-89:19
87 |     /// is shorthand for `Paint()..color = color`.
88 |     ///
89 +     /// In ``merge``, [apply], and [lerp], conflicts between [color] and [foreground]
90 |     /// specification are resolved in [foreground]'s favor - i.e. if [foreground] is
91 |     /// specified in one place, it will dominate [color] in another.
warning: 'merge' doesn't exist at '/Shaft/TextStyle/backgroundColor'
   --> Sources/Shaft/Painting/TextStyle.swift:100:14-100:19
98  |     /// `background: Paint()..color = backgroundColor`.
99  |     ///
100 +     /// In ``merge``, [apply], and [lerp], conflicts between [backgroundColor] and [background]
101 |     /// specification are resolved in [background]'s favor - i.e. if [background] is
102 |     /// specified in one place, it will dominate [color] in another.
warning: 'merge' doesn't exist at '/Shaft/TextStyle/foreground'
   --> Sources/Shaft/Painting/TextStyle.swift:228:14-228:19
226 |     /// is shorthand for `Paint()..color = color`.
227 |     ///
228 +     /// In ``merge``, [apply], and [lerp], conflicts between [color] and [foreground]
229 |     /// specification are resolved in [foreground]'s favor - i.e. if [foreground] is
230 |     /// specified in one place, it will dominate [color] in another.
warning: 'merge' doesn't exist at '/Shaft/TextStyle/background'
   --> Sources/Shaft/Painting/TextStyle.swift:244:14-244:19
242 |     /// `background: Paint()..color = backgroundColor`.
243 |     ///
244 +     /// In ``merge``, [apply], and [lerp], conflicts between [backgroundColor] and
245 |     /// [background] specification are resolved in [background]'s favor - i.e. if
246 |     /// [background] is specified in one place, it will dominate [backgroundColor]
warning: 'merge' doesn't exist at '/Shaft/TextStyle/debugLabel'
   --> Sources/Shaft/Painting/TextStyle.swift:278:25-278:30
276 |     /// This property is maintained only in debug builds.
277 |     ///
278 +     /// When merging (``merge``), copying ([copyWith]), modifying using [apply], or
279 |     /// interpolating ([lerp]), the label of the resulting style is marked with
280 |     /// the debug labels of the original styles. This helps figuring out where a
warning: 'x' doesn't exist at '/Shaft/Simulation'
 --> Sources/Shaft/Physics/Simulation.swift:6:33-6:34
4 | /// forces are being applied, and exposes:
5 | ///
6 + ///  * The object's position, ``x``
7 | ///  * The object's velocity, ``dx``
8 | ///  * Whether the simulation is "done", ``isDone``
warning: 'dx' doesn't exist at '/Shaft/Simulation'
 --> Sources/Shaft/Physics/Simulation.swift:7:33-7:35
5 | ///
6 | ///  * The object's position, ``x``
7 + ///  * The object's velocity, ``dx``
8 | ///  * Whether the simulation is "done", ``isDone``
9 | ///
warning: 'isDone' doesn't exist at '/Shaft/Simulation'
  --> Sources/Shaft/Physics/Simulation.swift:8:44-8:50
6  | ///  * The object's position, ``x``
7  | ///  * The object's velocity, ``dx``
8  + ///  * Whether the simulation is "done", ``isDone``
   |                                            ╰─suggestion: Replace 'isDone' with 'isDone(_:)'
9  | ///
10 | /// A simulation is generally "done" if the object has, to a given ``tolerance``,
warning: 'x' doesn't exist at '/Shaft/Simulation'
  --> Sources/Shaft/Physics/Simulation.swift:13:11-13:12
11 | /// come to a complete rest.
12 | ///
13 + /// The ``x``, ``dx``, and ``isDone`` functions take a time argument which specifies
14 | /// the time for which they are to be evaluated. In principle, simulations can
15 | /// be stateless, and thus can be queried with arbitrary times. In practice,
warning: 'dx' doesn't exist at '/Shaft/Simulation'
  --> Sources/Shaft/Physics/Simulation.swift:13:18-13:20
11 | /// come to a complete rest.
12 | ///
13 + /// The ``x``, ``dx``, and ``isDone`` functions take a time argument which specifies
14 | /// the time for which they are to be evaluated. In principle, simulations can
15 | /// be stateless, and thus can be queried with arbitrary times. In practice,
warning: 'isDone' doesn't exist at '/Shaft/Simulation'
  --> Sources/Shaft/Physics/Simulation.swift:13:30-13:36
11 | /// come to a complete rest.
12 | ///
13 + /// The ``x``, ``dx``, and ``isDone`` functions take a time argument which specifies
   |                              ╰─suggestion: Replace 'isDone' with 'isDone(_:)'
14 | /// the time for which they are to be evaluated. In principle, simulations can
15 | /// be stateless, and thus can be queried with arbitrary times. In practice,
warning: 'isDone' doesn't exist at '/Shaft/Simulation/tolerance'
  --> Sources/Shaft/Physics/Simulation.swift:37:26-37:32
35 |
36 |     /// How close to the actual end of the simulation a value at a particular time
37 +     /// must be before ``isDone`` considers the simulation to be "done".
38 |     ///
39 |     /// A simulation with an asymptotic curve would never technically be "done",
warning: 'AnimatedBuilder' doesn't exist at '/Shaft/SpringSimulation'
  --> Sources/Shaft/Physics/SpringSimulation.swift:93:58-93:73
91 | /// Models a particle attached to a spring that follows Hooke's law.
92 | ///
93 + /// This ``AnimationController`` could be used with an ``AnimatedBuilder`` to
94 | /// animate the position of a child as if it were attached to a spring.
95 | public struct SpringSimulation: Simulation {
warning: 'ContainerRenderObjectMixin' doesn't exist at '/Shaft/ContainerBoxParentData'
  --> Sources/Shaft/Rendering/RenderBox.swift:17:7-17:33
15 |
16 | /// Abstract ``ParentData`` subclass for ``RenderBox`` subclasses that want the
17 + /// ``ContainerRenderObjectMixin``.
18 | ///
19 | /// This is a convenience class that mixes in the relevant classes with
warning: 'width' doesn't exist at '/Shaft/Size'
  --> Sources/Shaft/Rendering/RenderBox.swift:31:30-31:35
29 | /// relations hold:
30 | ///
31 + /// * ``minWidth`` <= ``Size/width`` <= ``maxWidth``
32 | /// * ``minHeight`` <= ``Size/height`` <= ``maxHeight``
33 | public struct BoxConstraints: Constraints, Equatable {
warning: 'height' doesn't exist at '/Shaft/Size'
  --> Sources/Shaft/Rendering/RenderBox.swift:32:31-32:37
30 | ///
31 | /// * ``minWidth`` <= ``Size/width`` <= ``maxWidth``
32 + /// * ``minHeight`` <= ``Size/height`` <= ``maxHeight``
33 | public struct BoxConstraints: Constraints, Equatable {
34 |     /// Creates box constraints with the given constraints.
warning: 'constrain' doesn't exist at '/Shaft/BoxConstraints/constrainDimensions(width:height:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:171:52-171:61
169 |     /// possible to the given width and height.
170 |     ///
171 +     /// When you already have a ``Size``, prefer ``constrain``, which applies the same
172 |     /// algorithm to a ``Size`` directly.
173 |     public func constrainDimensions(width: Float, height: Float) -> Size {
warning: 'enforce' doesn't exist at '/Shaft/BoxConstraints/hasInfiniteWidth'
   --> Sources/Shaft/Rendering/RenderBox.swift:244:74-244:81
242 |     /// Such a constraint is used to indicate that a box should grow as large as
243 |     /// some other constraint (in this case, horizontally). If constraints are
244 +     /// infinite, then they must have other (non-infinite) constraints ``enforce``d
245 |     /// upon them, or must be ``tighten``ed, before they can be used to derive a
246 |     /// ``Size`` for a ``RenderBox/size``.
warning: 'tighten' doesn't exist at '/Shaft/BoxConstraints/hasInfiniteWidth'
   --> Sources/Shaft/Rendering/RenderBox.swift:245:33-245:40
243 |     /// some other constraint (in this case, horizontally). If constraints are
244 |     /// infinite, then they must have other (non-infinite) constraints ``enforce``d
245 +     /// upon them, or must be ``tighten``ed, before they can be used to derive a
246 |     /// ``Size`` for a ``RenderBox/size``.
247 |     ///
warning: 'enforce' doesn't exist at '/Shaft/BoxConstraints/hasInfiniteHeight'
   --> Sources/Shaft/Rendering/RenderBox.swift:261:74-261:81
259 |     /// Such a constraint is used to indicate that a box should grow as large as
260 |     /// some other constraint (in this case, vertically). If constraints are
261 +     /// infinite, then they must have other (non-infinite) constraints ``enforce``d
262 |     /// upon them, or must be ``tighten``ed, before they can be used to derive a
263 |     /// ``Size`` for a ``RenderBox/size``.
warning: 'tighten' doesn't exist at '/Shaft/BoxConstraints/hasInfiniteHeight'
   --> Sources/Shaft/Rendering/RenderBox.swift:262:33-262:40
260 |     /// some other constraint (in this case, vertically). If constraints are
261 |     /// infinite, then they must have other (non-infinite) constraints ``enforce``d
262 +     /// upon them, or must be ``tighten``ed, before they can be used to derive a
263 |     /// ``Size`` for a ``RenderBox/size``.
264 |     ///
warning: 'addWithPaintTransform' doesn't exist at '/Shaft/BoxHitTestResult'
   --> Sources/Shaft/Rendering/RenderBox.swift:294:32-294:53
292 | /// Method signature for hit testing a ``RenderBox``.
293 | ///
294 + /// Used by ``BoxHitTestResult/addWithPaintTransform`` to hit test children
    |                                ╰─suggestion: Replace 'addWithPaintTransform' with 'addWithPaintTransform(transform:position:hitTest:)'
295 | /// of a ``RenderBox``.
296 | ///
warning: 'hitTest' doesn't exist at '/Shaft/RenderBox'
   --> Sources/Shaft/Rendering/RenderBox.swift:299:20-299:27
297 | /// See also:
298 | ///
299 + ///  * ``RenderBox/hitTest``, which documents more details around hit testing
    |                    ├─suggestion: Replace 'hitTest' with 'hitTestSelf(_:)'
    |                    ├─suggestion: Replace 'hitTest' with 'hitTest(_:position:)'
    |                    ╰─suggestion: Replace 'hitTest' with 'hitTestChildren(_:position:)'
300 | ///    ``RenderBox``es.
301 | public typealias BoxHitTest = (BoxHitTestResult, Offset) -> Bool
warning: 'hitTestBoxChild' doesn't exist at '/Shaft/RenderSliverSingleBoxAdapter'
   --> Sources/Shaft/Rendering/RenderBox.swift:306:44-306:59
304 | /// managed position (one that is passed out-of-band).
305 | ///
306 + /// Used by ``RenderSliverSingleBoxAdapter/hitTestBoxChild`` to hit test
    |                                            ╰─suggestion: Replace 'hitTestBoxChild' with 'hitTestChildren(_:mainAxisPosition:crossAxisPosition:)'
307 | /// ``RenderBox`` children of a ``RenderSliver``.
308 | ///
warning: 'hitTest' doesn't exist at '/Shaft/RenderBox'
   --> Sources/Shaft/Rendering/RenderBox.swift:311:20-311:27
309 | /// See also:
310 | ///
311 + ///  * ``RenderBox/hitTest``, which documents more details around hit testing
    |                    ├─suggestion: Replace 'hitTest' with 'hitTestSelf(_:)'
    |                    ├─suggestion: Replace 'hitTest' with 'hitTest(_:position:)'
    |                    ╰─suggestion: Replace 'hitTest' with 'hitTestChildren(_:position:)'
312 | ///    ``RenderBox``es.
313 | public typealias BoxHitTestWithOutOfBandPosition = (BoxHitTestResult) -> Bool
warning: 'hitTest' doesn't exist at '/Shaft/RenderBox'
   --> Sources/Shaft/Rendering/RenderBox.swift:317:58-317:65
315 | /// The result of performing a hit test on ``RenderBox``es.
316 | ///
317 + /// An instance of this class is provided to ``RenderBox/hitTest`` to record the
    |                                                          ├─suggestion: Replace 'hitTest' with 'hitTestSelf(_:)'
    |                                                          ├─suggestion: Replace 'hitTest' with 'hitTest(_:position:)'
    |                                                          ╰─suggestion: Replace 'hitTest' with 'hitTestChildren(_:position:)'
318 | /// result of the hit test.
319 | public class BoxHitTestResult: HitTestResult {
warning: 'addWithPaintTransform' doesn't exist at '/Shaft/BoxHitTestResult/addWithPaintOffset(offset:position:hitTest:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:345:57-345:78
343 |     /// `position` as argument.
344 |     ///
345 +     /// This method can be used as a convenience over ``addWithPaintTransform`` if
346 |     /// a parent paints a child at an `offset`.
347 |     ///
warning: 'zero' doesn't exist at '/Shaft/Offset'
   --> Sources/Shaft/Rendering/RenderBox.swift:348:61-348:65
346 |     /// a parent paints a child at an `offset`.
347 |     ///
348 +     /// A null value for `offset` is treated as if ``Offset/zero`` was provided.
349 |     ///
350 |     /// The function returns the return value of the `hitTest` callback.
warning: 'addWithPaintTransform' doesn't exist at '/Shaft/BoxHitTestResult/addWithPaintOffset(offset:position:hitTest:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:354:14-354:35
352 |     /// See also:
353 |     ///
354 +     ///  * ``addWithPaintTransform``, which takes a generic paint transform matrix and
355 |     ///    documents the intended usage of this API in more detail.
356 |     public func addWithPaintOffset(
warning: 'removePerspectiveTransform' doesn't exist at '/Shaft/PointerEvent'
   --> Sources/Shaft/Rendering/RenderBox.swift:381:24-381:50
379 |     /// The provided paint `transform` (which describes the transform from the
380 |     /// child to the parent in 3D) is processed by
381 +     /// ``PointerEvent/removePerspectiveTransform`` to remove the
382 |     /// perspective component and inverted before it is used to transform
383 |     /// `position` from the coordinate system of the parent to the system of the
warning: 'addWithPaintOffset' doesn't exist at '/Shaft/BoxHitTestResult/addWithPaintTransform(transform:position:hitTest:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:401:14-401:32
399 |     /// See also:
400 |     ///
401 +     ///  * ``addWithPaintOffset``, which can be used for `transform`s that are just
402 |     ///    simple matrix translations by an ``Offset``.
403 |     ///  * ``addWithRawTransform``, which takes a transform matrix that is directly
warning: 'addWithRawTransform' doesn't exist at '/Shaft/BoxHitTestResult/addWithPaintTransform(transform:position:hitTest:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:403:14-403:33
401 |     ///  * ``addWithPaintOffset``, which can be used for `transform`s that are just
402 |     ///    simple matrix translations by an ``Offset``.
403 +     ///  * ``addWithRawTransform``, which takes a transform matrix that is directly
404 |     ///    used to transform the position without any pre-processing.
405 |     public func addWithPaintTransform(
warning: 'addWithPaintTransform' doesn't exist at '/Shaft/BoxHitTestResult/addWithRawTransform(transform:position:hitTest:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:432:18-432:39
430 |     /// `position` as argument.
431 |     ///
432 +     /// Unlike ``addWithPaintTransform``, the provided `transform` matrix is used
433 |     /// directly to transform `position` without any pre-processing.
434 |     ///
warning: 'addWithPaintTransform' doesn't exist at '/Shaft/BoxHitTestResult/addWithRawTransform(transform:position:hitTest:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:442:14-442:35
440 |     /// See also:
441 |     ///
442 +     ///  * ``addWithPaintTransform``, which accomplishes the same thing, but takes a
443 |     ///    _paint_ transform matrix.
444 |     public func addWithRawTransform(
warning: 'addWithPaintOffset' doesn't exist at '/Shaft/BoxHitTestResult/addWithOutOfBandPosition(paintOffset:paintTransform:rawTransform:hitTest:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:474:14-474:32
472 |     ///
473 |     ///  * `paintOffset` has the semantics of the `offset` passed to
474 +     ///    ``addWithPaintOffset``.
475 |     ///
476 |     ///  * `paintTransform` has the semantics of the `transform` passed to
warning: 'addWithPaintTransform' doesn't exist at '/Shaft/BoxHitTestResult/addWithOutOfBandPosition(paintOffset:paintTransform:rawTransform:hitTest:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:477:14-477:35
475 |     ///
476 |     ///  * `paintTransform` has the semantics of the `transform` passed to
477 +     ///    ``addWithPaintTransform``, except that it must be invertible; it
478 |     ///    is the responsibility of the caller to ensure this.
479 |     ///
warning: 'addWithRawTransform' doesn't exist at '/Shaft/BoxHitTestResult/addWithOutOfBandPosition(paintOffset:paintTransform:rawTransform:hitTest:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:481:14-481:33
479 |     ///
480 |     ///  * `rawTransform` has the semantics of the `transform` passed to
481 +     ///    ``addWithRawTransform``.
482 |     ///
483 |     /// Exactly one of these must be non-null.
warning: 'addWithPaintTransform' doesn't exist at '/Shaft/BoxHitTestResult/addWithOutOfBandPosition(paintOffset:paintTransform:rawTransform:hitTest:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:487:14-487:35
485 |     /// See also:
486 |     ///
487 +     ///  * ``addWithPaintTransform``, which takes a generic paint transform matrix and
488 |     ///    documents the intended usage of this API in more detail.
489 |     public func addWithOutOfBandPosition(
warning: 'getMinIntrinsicWidth' doesn't exist at '/Shaft/RenderBox/computeMinIntrinsicWidth(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:580:42-580:62
578 |     }
579 |
580 +     /// Computes the value returned by ``getMinIntrinsicWidth``. Do not call this
581 |     /// function directly, instead, call ``getMinIntrinsicWidth``.
582 |     open func computeMinIntrinsicWidth(_ height: Float) -> Float {
warning: 'getMinIntrinsicWidth' doesn't exist at '/Shaft/RenderBox/computeMinIntrinsicWidth(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:581:44-581:64
579 |
580 |     /// Computes the value returned by ``getMinIntrinsicWidth``. Do not call this
581 +     /// function directly, instead, call ``getMinIntrinsicWidth``.
582 |     open func computeMinIntrinsicWidth(_ height: Float) -> Float {
583 |         return 0.0
warning: 'getMinIntrinsicHeight' doesn't exist at '/Shaft/RenderBox/getMaxIntrinsicWidth(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:588:32-588:53
586 |     /// Returns the smallest width beyond which increasing the width never
587 |     /// decreases the preferred height. The preferred height is the value that
588 +     /// would be returned by ``getMinIntrinsicHeight`` for that width.
589 |     public final func getMaxIntrinsicWidth(_ height: Float) -> Float {
590 |         assert(height >= 0.0, "The height argument to getMaxIntrinsicWidth() must be positive.")
warning: 'getMaxIntrinsicWidth' doesn't exist at '/Shaft/RenderBox/computeMaxIntrinsicWidth(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:598:42-598:62
596 |     }
597 |
598 +     /// Computes the value returned by ``getMaxIntrinsicWidth``. Do not call this
599 |     /// function directly, instead, call ``getMaxIntrinsicWidth``.
600 |     open func computeMaxIntrinsicWidth(_ height: Float) -> Float {
warning: 'getMaxIntrinsicWidth' doesn't exist at '/Shaft/RenderBox/computeMaxIntrinsicWidth(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:599:44-599:64
597 |
598 |     /// Computes the value returned by ``getMaxIntrinsicWidth``. Do not call this
599 +     /// function directly, instead, call ``getMaxIntrinsicWidth``.
600 |     open func computeMaxIntrinsicWidth(_ height: Float) -> Float {
601 |         return 0.0
warning: 'getMinIntrinsicHeight' doesn't exist at '/Shaft/RenderBox/computeMinIntrinsicHeight(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:615:42-615:63
613 |     }
614 |
615 +     /// Computes the value returned by ``getMinIntrinsicHeight``. Do not call this
616 |     /// function directly, instead, call ``getMinIntrinsicHeight``.
617 |     open func computeMinIntrinsicHeight(_ width: Float) -> Float {
warning: 'getMinIntrinsicHeight' doesn't exist at '/Shaft/RenderBox/computeMinIntrinsicHeight(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:616:44-616:65
614 |
615 |     /// Computes the value returned by ``getMinIntrinsicHeight``. Do not call this
616 +     /// function directly, instead, call ``getMinIntrinsicHeight``.
617 |     open func computeMinIntrinsicHeight(_ width: Float) -> Float {
618 |         return 0.0
warning: 'getMinIntrinsicWidth' doesn't exist at '/Shaft/RenderBox/getMaxIntrinsicHeight(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:623:32-623:52
621 |     /// Returns the smallest height beyond which increasing the height never
622 |     /// decreases the preferred width. The preferred width is the value that
623 +     /// would be returned by ``getMinIntrinsicWidth`` for that height.
624 |     public final func getMaxIntrinsicHeight(_ width: Float) -> Float {
625 |         assert(width >= 0.0, "The width argument to getMaxIntrinsicHeight() must be positive.")
warning: 'getMaxIntrinsicHeight' doesn't exist at '/Shaft/RenderBox/computeMaxIntrinsicHeight(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:633:42-633:63
631 |     }
632 |
633 +     /// Computes the value returned by ``getMaxIntrinsicHeight``. Do not call this
634 |     /// function directly, instead, call ``getMaxIntrinsicHeight``.
635 |     open func computeMaxIntrinsicHeight(_ width: Float) -> Float {
warning: 'getMaxIntrinsicHeight' doesn't exist at '/Shaft/RenderBox/computeMaxIntrinsicHeight(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:634:44-634:65
632 |
633 |     /// Computes the value returned by ``getMaxIntrinsicHeight``. Do not call this
634 +     /// function directly, instead, call ``getMaxIntrinsicHeight``.
635 |     open func computeMaxIntrinsicHeight(_ width: Float) -> Float {
636 |         return 0.0
warning: 'getDryLayout' doesn't exist at '/Shaft/RenderBox/computeDryLayout(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:639:42-639:54
637 |     }
638 |
639 +     /// Computes the value returned by ``getDryLayout``. Do not call this
640 |     /// function directly, instead, call ``getDryLayout``.
641 |     open func computeDryLayout(_ constraints: BoxConstraints) -> Size {
warning: 'getDryLayout' doesn't exist at '/Shaft/RenderBox/computeDryLayout(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:640:44-640:56
638 |
639 |     /// Computes the value returned by ``getDryLayout``. Do not call this
640 +     /// function directly, instead, call ``getDryLayout``.
641 |     open func computeDryLayout(_ constraints: BoxConstraints) -> Size {
642 |         return Size.zero
warning: 'computeDryLayout' doesn't exist at '/Shaft/RenderBox/performResize()'
   --> Sources/Shaft/Rendering/RenderBox.swift:687:65-687:81
685 |     }
686 |
687 +     /// By default this method sets ``size`` to the result of ``computeDryLayout``
688 |     /// called with the current ``constraints``. Instead of overriding this method,
689 |     /// consider overriding ``computeDryLayout``.
warning: 'constraints' doesn't exist at '/Shaft/RenderBox/performResize()'
   --> Sources/Shaft/Rendering/RenderBox.swift:688:35-688:46
686 |
687 |     /// By default this method sets ``size`` to the result of ``computeDryLayout``
688 +     /// called with the current ``constraints``. Instead of overriding this method,
689 |     /// consider overriding ``computeDryLayout``.
690 |     open override func performResize() {
warning: 'computeDryLayout' doesn't exist at '/Shaft/RenderBox/performResize()'
   --> Sources/Shaft/Rendering/RenderBox.swift:689:31-689:47
687 |     /// By default this method sets ``size`` to the result of ``computeDryLayout``
688 |     /// called with the current ``constraints``. Instead of overriding this method,
689 +     /// consider overriding ``computeDryLayout``.
690 |     open override func performResize() {
691 |         // default behavior for subclasses that have sizedByParent = true
warning: 'position' doesn't exist at '/Shaft/RenderBox/hitTest(_:position:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:713:54-713:62
711 |     /// Returns false if the hit can continue to other objects below this one.
712 |     ///
713 +     /// The caller is responsible for transforming ``position`` from global
714 |     /// coordinates to its location relative to the origin of this ``RenderBox``.
715 |     /// This ``RenderBox`` is responsible for checking whether the given position is
warning: 'position' doesn't exist at '/Shaft/RenderBox/hitTestSelf(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:736:54-736:62
734 |     /// on this render object.
735 |     ///
736 +     /// The caller is responsible for transforming ``position`` from global
737 |     /// coordinates to its location relative to the origin of this ``RenderBox``.
738 |     /// This ``RenderBox`` is responsible for checking whether the given position is
warning: 'hitTest' doesn't exist at '/Shaft/RenderBox/hitTestSelf(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:741:19-741:26
739 |     /// within its bounds.
740 |     ///
741 +     /// Used by ``hitTest``. If you override ``hitTest`` and do not call this
742 |     /// function, then you don't need to implement this function.
743 |     open func hitTestSelf(_ position: Offset) -> Bool {
warning: 'hitTest' doesn't exist at '/Shaft/RenderBox/hitTestSelf(_:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:741:48-741:55
739 |     /// within its bounds.
740 |     ///
741 +     /// Used by ``hitTest``. If you override ``hitTest`` and do not call this
742 |     /// function, then you don't need to implement this function.
743 |     open func hitTestSelf(_ position: Offset) -> Bool {
warning: 'position' doesn't exist at '/Shaft/RenderBox/hitTestChildren(_:position:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:757:54-757:62
755 |     /// visually "on top" (i.e., paints later).
756 |     ///
757 +     /// The caller is responsible for transforming ``position`` from global
758 |     /// coordinates to its location relative to the origin of this ``RenderBox``.
759 |     /// Likewise, this ``RenderBox`` is responsible for transforming the position
warning: 'hitTest' doesn't exist at '/Shaft/RenderBox/hitTestChildren(_:position:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:760:56-760:63
758 |     /// coordinates to its location relative to the origin of this ``RenderBox``.
759 |     /// Likewise, this ``RenderBox`` is responsible for transforming the position
760 +     /// that it passes to its children when it calls ``hitTest`` on each child.
761 |     open func hitTestChildren(_ result: HitTestResult, position: Offset) -> Bool {
762 |         return false
warning: 'parentData' doesn't exist at '/Shaft/RenderBox/applyPaintTransform(_:transform:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:774:19-774:29
772 |     /// The ``RenderBox`` implementation takes care of adjusting the matrix for the
773 |     /// position of the given child as determined during layout and stored on the
774 +     /// child's ``parentData`` in the ``BoxParentData/offset`` field.
775 |     open override func applyPaintTransform(_ child: RenderObject, transform: inout Matrix4x4f) {
776 |         assert(child.parent === self)
warning: 'offset' doesn't exist at '/Shaft/BoxParentData'
   --> Sources/Shaft/Rendering/RenderBox.swift:774:55-774:61
772 |     /// The ``RenderBox`` implementation takes care of adjusting the matrix for the
773 |     /// position of the given child as determined during layout and stored on the
774 +     /// child's ``parentData`` in the ``BoxParentData/offset`` field.
775 |     open override func applyPaintTransform(_ child: RenderObject, transform: inout Matrix4x4f) {
776 |         assert(child.parent === self)
warning: 'transformPoint' doesn't exist at '/Shaft/MatrixUtils'
   --> Sources/Shaft/Rendering/RenderBox.swift:796:53-796:67
794 |     ///
795 |     /// This method will un-project the point from the screen onto the widget,
796 +     /// which makes it different from ``MatrixUtils/transformPoint``.
    |                                                     ├─suggestion: Replace 'transformPoint' with 'transformPoint(_:_:)'
    |                                                     ╰─suggestion: Replace 'transformPoint' with 'transformRect(_:_:)'
797 |     ///
798 |     /// If the transform from global coordinates to local coordinates is
warning: 'zero' doesn't exist at '/Shaft/Offset'
   --> Sources/Shaft/Rendering/RenderBox.swift:799:52-799:56
797 |     ///
798 |     /// If the transform from global coordinates to local coordinates is
799 +     /// degenerate, this function returns ``Offset/zero``.
800 |     ///
801 |     /// If `ancestor` is non-null, this function converts the given point from
warning: 'getTransformTo' doesn't exist at '/Shaft/RenderBox/globalToLocal(_:ancestor:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:805:50-805:64
803 |     /// render object) instead of from the global coordinate system.
804 |     ///
805 +     /// This method is implemented in terms of ``getTransformTo``.
806 |     public func globalToLocal(_ point: Offset, ancestor: RenderObject? = nil) -> Offset {
807 |         var transform = getTransformTo(ancestor)
warning: 'getTransformTo' doesn't exist at '/Shaft/RenderBox/localToGlobal(_:ancestor:)'
   --> Sources/Shaft/Rendering/RenderBox.swift:841:50-841:64
839 |     /// object) instead of to the global coordinate system.
840 |     ///
841 +     /// This method is implemented in terms of ``getTransformTo``. If the transform
842 |     /// matrix puts the given `point` on the line at infinity (for instance, when
843 |     /// the transform matrix is the zero matrix), this method returns (NaN, NaN).
warning: 'paint' doesn't exist at '/Shaft/CustomPainter'
  --> Sources/Shaft/Rendering/RenderCustomPaint.swift:10:21-10:26
8  | /// To implement a custom painter, either subclass or implement this interface
9  | /// to define your custom paint delegate. ``CustomPainter`` subclasses must
10 + /// implement the ``paint`` and ``shouldRepaint`` methods, and may optionally also
   |                     ├─suggestion: Replace 'paint' with 'repaint'
   |                     ╰─suggestion: Replace 'paint' with 'paint(canvas:size:)'
11 | /// implement the ``hitTest`` and ``shouldRebuildSemantics`` methods, and the
12 | /// ``semanticsBuilder`` getter.
warning: 'shouldRepaint' doesn't exist at '/Shaft/CustomPainter'
  --> Sources/Shaft/Rendering/RenderCustomPaint.swift:10:35-10:48
8  | /// To implement a custom painter, either subclass or implement this interface
9  | /// to define your custom paint delegate. ``CustomPainter`` subclasses must
10 + /// implement the ``paint`` and ``shouldRepaint`` methods, and may optionally also
   |                                   ╰─suggestion: Replace 'shouldRepaint' with 'shouldRepaint(_:)'
11 | /// implement the ``hitTest`` and ``shouldRebuildSemantics`` methods, and the
12 | /// ``semanticsBuilder`` getter.
warning: 'hitTest' doesn't exist at '/Shaft/CustomPainter'
  --> Sources/Shaft/Rendering/RenderCustomPaint.swift:11:21-11:28
9  | /// to define your custom paint delegate. ``CustomPainter`` subclasses must
10 | /// implement the ``paint`` and ``shouldRepaint`` methods, and may optionally also
11 + /// implement the ``hitTest`` and ``shouldRebuildSemantics`` methods, and the
   |                     ╰─suggestion: Replace 'hitTest' with 'hitTest(_:)'
12 | /// ``semanticsBuilder`` getter.
13 | ///
warning: 'shouldRebuildSemantics' doesn't exist at '/Shaft/CustomPainter'
  --> Sources/Shaft/Rendering/RenderCustomPaint.swift:11:37-11:59
9  | /// to define your custom paint delegate. ``CustomPainter`` subclasses must
10 | /// implement the ``paint`` and ``shouldRepaint`` methods, and may optionally also
11 + /// implement the ``hitTest`` and ``shouldRebuildSemantics`` methods, and the
   |                                     ╰─suggestion: Replace 'shouldRebuildSemantics' with 'shouldRepaint(_:)'
12 | /// ``semanticsBuilder`` getter.
13 | ///
warning: 'semanticsBuilder' doesn't exist at '/Shaft/CustomPainter'
  --> Sources/Shaft/Rendering/RenderCustomPaint.swift:12:7-12:23
10 | /// implement the ``paint`` and ``shouldRepaint`` methods, and may optionally also
11 | /// implement the ``hitTest`` and ``shouldRebuildSemantics`` methods, and the
12 + /// ``semanticsBuilder`` getter.
13 | ///
14 | /// The ``paint`` method is called whenever the custom object needs to be repainted.
warning: 'paint' doesn't exist at '/Shaft/CustomPainter'
  --> Sources/Shaft/Rendering/RenderCustomPaint.swift:14:11-14:16
12 | /// ``semanticsBuilder`` getter.
13 | ///
14 + /// The ``paint`` method is called whenever the custom object needs to be repainted.
   |           ├─suggestion: Replace 'paint' with 'repaint'
   |           ╰─suggestion: Replace 'paint' with 'paint(canvas:size:)'
15 | ///
16 | /// The ``shouldRepaint`` method is called when a new instance of the class
warning: 'shouldRepaint' doesn't exist at '/Shaft/CustomPainter'
  --> Sources/Shaft/Rendering/RenderCustomPaint.swift:16:11-16:24
14 | /// The ``paint`` method is called whenever the custom object needs to be repainted.
15 | ///
16 + /// The ``shouldRepaint`` method is called when a new instance of the class
   |           ╰─suggestion: Replace 'shouldRepaint' with 'shouldRepaint(_:)'
17 | /// is provided, to check if the new instance actually represents different
18 | /// information.
warning: 'hitTest' doesn't exist at '/Shaft/CustomPainter'
  --> Sources/Shaft/Rendering/RenderCustomPaint.swift:35:11-35:18
33 | /// animation ticks, avoiding both the build and layout phases of the pipeline.
34 | ///
35 + /// The ``hitTest`` method is called when the user interacts with the underlying
   |           ╰─suggestion: Replace 'hitTest' with 'hitTest(_:)'
36 | /// render object, to determine if the user hit the object or missed it.
37 | ///
warning: 'semanticsBuilder' doesn't exist at '/Shaft/CustomPainter'
  --> Sources/Shaft/Rendering/RenderCustomPaint.swift:38:11-38:27
36 | /// render object, to determine if the user hit the object or missed it.
37 | ///
38 + /// The ``semanticsBuilder`` is called whenever the custom object needs to rebuild
39 | /// its semantics information.
40 | ///
warning: 'shouldRebuildSemantics' doesn't exist at '/Shaft/CustomPainter'
  --> Sources/Shaft/Rendering/RenderCustomPaint.swift:41:11-41:33
39 | /// its semantics information.
40 | ///
41 + /// The ``shouldRebuildSemantics`` method is called when a new instance of the
   |           ╰─suggestion: Replace 'shouldRebuildSemantics' with 'shouldRepaint(_:)'
42 | /// class is provided, to check if the new instance contains different
43 | /// information that affects the semantics tree.
warning: 'paint' doesn't exist at '/Shaft/CustomPainter/paint(canvas:size:)'
   --> Sources/Shaft/Rendering/RenderCustomPaint.swift:136:49-136:54
134 |     /// operation is inside the bounds (e.g., drawing a rectangle whose size is
135 |     /// determined by user inputs). In that case, consider calling
136 +     /// [Canvas.clipRect] at the beginning of ``paint`` so everything that follows
137 |     /// will be guaranteed to only draw within the clipped area.
138 |     ///
warning: 'paint' doesn't exist at '/Shaft/CustomPainter/paint(canvas:size:)'
   --> Sources/Shaft/Rendering/RenderCustomPaint.swift:155:33-155:38
153 |     ///    paint delegate, giving it the new [ImageInfo] object.
154 |     ///
155 +     /// 3. In your delegate's ``paint`` method, call the [Canvas.drawImage],
156 |     ///    [Canvas.drawImageRect], or [Canvas.drawImageNine] methods to paint the
157 |     ///    [ImageInfo.image] object, applying the [ImageInfo.scale] value to
warning: 'paint' doesn't exist at '/Shaft/CustomPainter/shouldRepaint(_:)'
   --> Sources/Shaft/Rendering/RenderCustomPaint.swift:171:49-171:54
169 |     /// false.
170 |     ///
171 +     /// If the method returns false, then the ``paint`` call might be optimized
172 |     /// away.
173 |     ///
warning: 'paint' doesn't exist at '/Shaft/CustomPainter/shouldRepaint(_:)'
   --> Sources/Shaft/Rendering/RenderCustomPaint.swift:174:34-174:39
172 |     /// away.
173 |     ///
174 +     /// It's possible that the ``paint`` method will get called even if
175 |     /// ``shouldRepaint`` returns false (e.g. if an ancestor or descendant needed to
176 |     /// be repainted). It's also possible that the ``paint`` method will get called
warning: 'shouldRepaint' doesn't exist at '/Shaft/CustomPainter/shouldRepaint(_:)'
   --> Sources/Shaft/Rendering/RenderCustomPaint.swift:175:11-175:24
173 |     ///
174 |     /// It's possible that the ``paint`` method will get called even if
175 +     /// ``shouldRepaint`` returns false (e.g. if an ancestor or descendant needed to
176 |     /// be repainted). It's also possible that the ``paint`` method will get called
177 |     /// without ``shouldRepaint`` being called at all (e.g. if the box changes
warning: 'paint' doesn't exist at '/Shaft/CustomPainter/shouldRepaint(_:)'
   --> Sources/Shaft/Rendering/RenderCustomPaint.swift:176:54-176:59
174 |     /// It's possible that the ``paint`` method will get called even if
175 |     /// ``shouldRepaint`` returns false (e.g. if an ancestor or descendant needed to
176 +     /// be repainted). It's also possible that the ``paint`` method will get called
177 |     /// without ``shouldRepaint`` being called at all (e.g. if the box changes
178 |     /// size).
warning: 'shouldRepaint' doesn't exist at '/Shaft/CustomPainter/shouldRepaint(_:)'
   --> Sources/Shaft/Rendering/RenderCustomPaint.swift:177:19-177:32
175 |     /// ``shouldRepaint`` returns false (e.g. if an ancestor or descendant needed to
176 |     /// be repainted). It's also possible that the ``paint`` method will get called
177 +     /// without ``shouldRepaint`` being called at all (e.g. if the box changes
178 |     /// size).
179 |     ///
warning: 'paint' doesn't exist at '/Shaft/CustomPainter/hitTest(_:)'
   --> Sources/Shaft/Rendering/RenderCustomPaint.swift:192:11-192:16
190 |     ///
191 |     /// The given point is relative to the same coordinate space as the last
192 +     /// ``paint`` call.
193 |     ///
194 |     /// The default behavior is to consider all points to be hits for
warning: 'EditableText.minLines' doesn't exist at '/Shaft/RenderEditable/minLines'
   --> Sources/Shaft/Rendering/RenderEditable.swift:435:16-435:37
433 |     }
434 |
435 +     /// See: ``EditableText.minLines``.
436 |     public var minLines: Int? {
437 |         didSet {
warning: 'EditableText.expands' doesn't exist at '/Shaft/RenderEditable/expands'
   --> Sources/Shaft/Rendering/RenderEditable.swift:444:16-444:36
442 |     }
443 |
444 +     /// See: ``EditableText.expands``.
445 |     public var expands: Bool = false {
446 |         didSet {
warning: 'addLayer' doesn't exist at '/Shaft/PaintingContext/pushLayer(_:_:_:childPaintBounds:)'
   --> Sources/Shaft/Rendering/RenderObject.swift:163:14-163:22
161 |     /// See also:
162 |     ///
163 +     ///  * ``addLayer``, for pushing a layer without painting further contents
164 |     ///    within it.
165 |     public func pushLayer(
warning: 'layer' doesn't exist at '/Shaft/RenderObject'
   --> Sources/Shaft/Rendering/RenderObject.swift:233:24-233:29
231 |     /// returns null, indicating that a layer is no longer necessary. If a
232 |     /// render object calling this method stores the `oldLayer` in its
233 +     /// ``RenderObject/layer`` field, it should set that field to null.
234 |     ///
235 |     /// When `needsCompositing` is false, this method will use a more efficient
warning: 'painter' doesn't exist at '/Shaft/PaintingContext/pushClipRect(needsCompositing:offset:clipRect:clipBehavior:painter:oldLayer:)'
   --> Sources/Shaft/Rendering/RenderObject.swift:245:44-245:51
243 |     ///
244 |     /// The `clipRect` is the rectangle (in the caller's coordinate system) to
245 +     /// use to clip the painting done by ``painter``. It should not include the
246 |     /// `offset`.
247 |     ///
warning: 'pushClipRect' doesn't exist at '/Shaft/PaintingContext/pushClipRect(needsCompositing:offset:clipRect:clipBehavior:painter:oldLayer:)'
   --> Sources/Shaft/Rendering/RenderObject.swift:249:57-249:69
247 |     ///
248 |     /// The `painter` callback will be called while the `clipRect` is applied.
249 +     /// It is called synchronously during the call to ``pushClipRect``.
250 |     ///
251 |     /// The `clipBehavior` argument controls how the rectangle is clipped.
warning: 'layer' doesn't exist at '/Shaft/RenderObject'
   --> Sources/Shaft/Rendering/RenderObject.swift:256:70-256:75
254 |     /// the `oldLayer` argument, specify the layer created in the previous
255 |     /// frame. This gives the engine more information for performance
256 +     /// optimizations. Typically this is the value of ``RenderObject/layer`` that
257 |     /// a render object creates once, then reuses for all subsequent frames
258 |     /// until a layer is no longer needed (e.g. the render object no longer
warning: 'PipelineOwner' doesn't exist at '/Shaft/RenderObject/invokeLayoutCallback(_:)'
    --> Sources/Shaft/Rendering/RenderObject.swift:1029:23-1029:36
1027 |     /// Allows mutations to be made to this object's child list (and any
1028 |     /// descendants) as well as to any other dirty nodes in the render tree owned
1029 +     /// by the same ``PipelineOwner`` as this object. The `callback` argument is
1030 |     /// invoked synchronously, and the mutations are allowed only during that
1031 |     /// callback's execution.
warning: 'child' doesn't exist at '/Shaft/RenderObjectWithChild/redepthChildren()'
    --> Sources/Shaft/Rendering/RenderObject.swift:1459:43-1459:48
1457 |     func visitChildren(visitor: (ChildType) -> Void)
1458 |
1459 +     /// Adjust the [depth] of the given ``child`` to be greater than this node's
1460 |     /// own [depth].
1461 |     ///
warning: 'RenderProxySliver' doesn't exist at '/Shaft/RenderProxyBox'
  --> Sources/Shaft/Rendering/RenderProxyBox.swift:25:10-25:27
23 | /// See also:
24 | ///
25 + ///  * ``RenderProxySliver``, a base class for render slivers that resemble their
26 | ///    children.
27 | open class RenderProxyBox: RenderBox, RenderObjectWithSingleChild {
warning: 'child' doesn't exist at '/Shaft/RenderConstrainedBox'
   --> Sources/Shaft/Rendering/RenderProxyBox.swift:154:34-154:39
152 | /// as well.
153 | ///
154 + /// For example, if you wanted ``child`` to have a minimum height of 50.0 logical
155 | /// pixels, you could use `const BoxConstraints(minHeight: 50.0)` as the
156 | /// ``additionalConstraints``.
warning: 'child' doesn't exist at '/Shaft/RenderConstrainedBox/additionalConstraints'
   --> Sources/Shaft/Rendering/RenderProxyBox.swift:166:46-166:51
164 |     }
165 |
166 +     /// Additional constraints to apply to ``child`` during layout.
167 |     public var additionalConstraints: BoxConstraints {
168 |         didSet {
warning: 'RenderConstraintsTransformBox' doesn't exist at '/Shaft/RenderShiftedBox'
  --> Sources/Shaft/Rendering/RenderShiftedBox.swift:12:15-12:44
10 | /// ``BoxConstraints``.
11 | ///
12 + /// Used by ``RenderConstraintsTransformBox`` and ``ConstraintsTransformBox``.
13 | /// Typically the caller requires the returned ``BoxConstraints`` to be
14 | /// ``BoxConstraints/isNormalized``.
warning: 'ConstraintsTransformBox' doesn't exist at '/Shaft/RenderShiftedBox'
  --> Sources/Shaft/Rendering/RenderShiftedBox.swift:12:53-12:76
10 | /// ``BoxConstraints``.
11 | ///
12 + /// Used by ``RenderConstraintsTransformBox`` and ``ConstraintsTransformBox``.
13 | /// Typically the caller requires the returned ``BoxConstraints`` to be
14 | /// ``BoxConstraints/isNormalized``.
warning: 'isNormalized' doesn't exist at '/Shaft/BoxConstraints'
  --> Sources/Shaft/Rendering/RenderShiftedBox.swift:14:22-14:34
12 | /// Used by ``RenderConstraintsTransformBox`` and ``ConstraintsTransformBox``.
13 | /// Typically the caller requires the returned ``BoxConstraints`` to be
14 + /// ``BoxConstraints/isNormalized``.
15 | public class RenderShiftedBox: RenderBox, RenderObjectWithSingleChild {
16 |     public typealias ChildType = RenderBox
warning: 'PipelineOwner' doesn't exist at '/Shaft/RenderView/prepareInitialFrame()'
   --> Sources/Shaft/Rendering/RenderView.swift:102:11-102:24
100 |     ///
101 |     /// This does not actually schedule the first frame. Call
102 +     /// ``PipelineOwner/requestVisualUpdate`` on ``owner`` to do that.
103 |     public func prepareInitialFrame() {
104 |         assert(owner != nil)
warning: 'owner' doesn't exist at '/Shaft/RenderView/prepareInitialFrame()'
   --> Sources/Shaft/Rendering/RenderView.swift:102:52-102:57
100 |     ///
101 |     /// This does not actually schedule the first frame. Call
102 +     /// ``PipelineOwner/requestVisualUpdate`` on ``owner`` to do that.
103 |     public func prepareInitialFrame() {
104 |         assert(owner != nil)
warning: 'position' doesn't exist at '/Shaft/RenderView/hitTest(_:position:)'
   --> Sources/Shaft/Rendering/RenderView.swift:159:15-159:23
157 |     /// given hit test result.
158 |     ///
159 +     /// The ``position`` argument is in the coordinate system of the render view,
160 |     /// which is to say, in logical pixels. This is not necessarily the same
161 |     /// coordinate system as that expected by the root ``Layer``, which will
warning: 'handleBeginFrame' doesn't exist at '/Shaft/SchedulerBinding'
  --> Sources/Shaft/Scheduler/SchedulerBinding.swift:10:24-10:40
8  |
9  | /// The various phases that a ``SchedulerBinding`` goes through during
10 + /// ``SchedulerBinding/handleBeginFrame``.
11 | ///
12 | /// This is exposed by ``SchedulerBinding/schedulerPhase``.
warning: 'handleBeginFrame' doesn't exist at '/Shaft/SchedulerBinding/hasScheduledFrame'
  --> Sources/Shaft/Scheduler/SchedulerBinding.swift:44:53-44:69
42 |     public private(set) var schedulerPhase = SchedulerPhase.idle
43 |
44 +     /// Whether this scheduler has requested that ``handleBeginFrame`` be called soon.
45 |     public private(set) var hasScheduledFrame = false
46 |
warning: 'scheduleFrame' doesn't exist at '/Shaft/SchedulerBinding/framesEnabled'
  --> Sources/Shaft/Scheduler/SchedulerBinding.swift:47:61-47:74
45 |     public private(set) var hasScheduledFrame = false
46 |
47 +     /// Whether frames are currently being scheduled when ``scheduleFrame`` is called.
48 |     ///
49 |     /// This value depends on the value of the ``lifecycleState``.
warning: 'lifecycleState' doesn't exist at '/Shaft/SchedulerBinding/framesEnabled'
  --> Sources/Shaft/Scheduler/SchedulerBinding.swift:49:50-49:64
47 |     /// Whether frames are currently being scheduled when ``scheduleFrame`` is called.
48 |     ///
49 +     /// This value depends on the value of the ``lifecycleState``.
50 |     public private(set) var framesEnabled = true
51 |
warning: 'scheduleFrame' doesn't exist at '/Shaft/SchedulerBinding/ensureVisualUpdate()'
  --> Sources/Shaft/Scheduler/SchedulerBinding.swift:64:39-64:52
62 |     private var rescheduleAfterWarmUpFrame = false
63 |
64 +     /// Schedules a new frame using ``scheduleFrame`` if this object is not
65 |     /// currently producing a frame.
66 |     ///
warning: 'handleDrawFrame' doesn't exist at '/Shaft/SchedulerBinding/ensureVisualUpdate()'
  --> Sources/Shaft/Scheduler/SchedulerBinding.swift:67:44-67:59
65 |     /// currently producing a frame.
66 |     ///
67 +     /// Calling this method ensures that ``handleDrawFrame`` will eventually be
68 |     /// called, unless it's already in progress.
69 |     public func ensureVisualUpdate() {
warning: 'handleBeginFrame' doesn't exist at '/Shaft/SchedulerBinding/currentFrameTimeStamp'
   --> Sources/Shaft/Scheduler/SchedulerBinding.swift:126:57-126:73
124 |     /// The time stamp for the frame currently being processed.
125 |     ///
126 +     /// This is only valid while between the start of ``handleBeginFrame`` and the
127 |     /// end of the corresponding ``handleDrawFrame``, i.e. while a frame is being
128 |     /// produced.
warning: 'handleDrawFrame' doesn't exist at '/Shaft/SchedulerBinding/currentFrameTimeStamp'
   --> Sources/Shaft/Scheduler/SchedulerBinding.swift:127:36-127:51
125 |     ///
126 |     /// This is only valid while between the start of ``handleBeginFrame`` and the
127 +     /// end of the corresponding ``handleDrawFrame``, i.e. while a frame is being
128 |     /// produced.
129 |     public private(set) var currentFrameTimeStamp: Duration!
warning: 'SingleTickerProviderStateMixin' doesn't exist at '/Shaft/TickerProvider'
  --> Sources/Shaft/Scheduler/Ticker.swift:14:7-14:37
12 | /// obtain their ``Ticker``. If you are creating an ``AnimationController`` from a
13 | /// ``State``, then you can use the ``TickerProviderStateMixin`` and
14 + /// ``SingleTickerProviderStateMixin`` classes to obtain a suitable
15 | /// ``TickerProvider``. The widget test framework ``WidgetTester`` object can be
16 | /// used as a ticker provider in the context of tests. In other contexts, you
warning: 'WidgetTester' doesn't exist at '/Shaft/TickerProvider'
  --> Sources/Shaft/Scheduler/Ticker.swift:15:53-15:65
13 | /// ``State``, then you can use the ``TickerProviderStateMixin`` and
14 | /// ``SingleTickerProviderStateMixin`` classes to obtain a suitable
15 + /// ``TickerProvider``. The widget test framework ``WidgetTester`` object can be
16 | /// used as a ticker provider in the context of tests. In other contexts, you
17 | /// will have to either pass a ``TickerProvider`` from a higher level (e.g.
warning: 'addHandler' doesn't exist at '/Shaft/HardwareKeyboard'
   --> Sources/Shaft/Services/HardwareKeyboard.swift:127:20-127:30
125 | ///
126 | /// To stay notified whenever keys are pressed, held, or released, add a
127 + /// handler with ``addHandler``. To only be notified when a specific part of the
    |                    ╰─suggestion: Replace 'addHandler' with 'addHandler(_:)'
128 | /// app is focused, use a ``Focus`` widget's `onFocusChanged` attribute instead
129 | /// of ``addHandler``. Handlers should be removed with ``removeHandler`` when
warning: 'addHandler' doesn't exist at '/Shaft/HardwareKeyboard'
   --> Sources/Shaft/Services/HardwareKeyboard.swift:129:10-129:20
127 | /// handler with ``addHandler``. To only be notified when a specific part of the
128 | /// app is focused, use a ``Focus`` widget's `onFocusChanged` attribute instead
129 + /// of ``addHandler``. Handlers should be removed with ``removeHandler`` when
    |          ╰─suggestion: Replace 'addHandler' with 'addHandler(_:)'
130 | /// notification is no longer necessary, or when the handler is being disposed.
131 | ///
warning: 'removeHandler' doesn't exist at '/Shaft/HardwareKeyboard'
   --> Sources/Shaft/Services/HardwareKeyboard.swift:129:58-129:71
127 | /// handler with ``addHandler``. To only be notified when a specific part of the
128 | /// app is focused, use a ``Focus`` widget's `onFocusChanged` attribute instead
129 + /// of ``addHandler``. Handlers should be removed with ``removeHandler`` when
    |                                                          ╰─suggestion: Replace 'removeHandler' with 'removeHandler(_:)'
130 | /// notification is no longer necessary, or when the handler is being disposed.
131 | ///
warning: 'ServicesBinding' doesn't exist at '/Shaft/HardwareKeyboard'
   --> Sources/Shaft/Services/HardwareKeyboard.swift:137:66-137:81
135 | /// event handler.
136 | ///
137 + /// The singleton ``HardwareKeyboard`` instance is held by the ``ServicesBinding``
138 | /// as ``ServicesBinding/keyboard``, and can be conveniently accessed using the
139 | /// ``HardwareKeyboard/instance`` static accessor.
warning: 'ServicesBinding' doesn't exist at '/Shaft/HardwareKeyboard'
   --> Sources/Shaft/Services/HardwareKeyboard.swift:138:10-138:25
136 | ///
137 | /// The singleton ``HardwareKeyboard`` instance is held by the ``ServicesBinding``
138 + /// as ``ServicesBinding/keyboard``, and can be conveniently accessed using the
139 | /// ``HardwareKeyboard/instance`` static accessor.
140 | ///
warning: 'instance' doesn't exist at '/Shaft/HardwareKeyboard'
   --> Sources/Shaft/Services/HardwareKeyboard.swift:139:24-139:32
137 | /// The singleton ``HardwareKeyboard`` instance is held by the ``ServicesBinding``
138 | /// as ``ServicesBinding/keyboard``, and can be conveniently accessed using the
139 + /// ``HardwareKeyboard/instance`` static accessor.
140 | ///
141 | /// ## Event model
warning: 'removeHandler' doesn't exist at '/Shaft/HardwareKeyboard/addHandler(_:)'
   --> Sources/Shaft/Services/HardwareKeyboard.swift:384:14-384:27
382 |     /// See also:
383 |     ///
384 +     ///  * ``removeHandler``, which removes the handler.
385 |     public func addHandler(_ handler: Handler) {
386 |         if _duringDispatch {
warning: 'addHandler' doesn't exist at '/Shaft/HardwareKeyboard/removeHandler(_:)'
   --> Sources/Shaft/Services/HardwareKeyboard.swift:398:11-398:21
396 |     ///
397 |     /// The `handler` argument must be [identical] to the one used in
398 +     /// ``addHandler``. If multiple exist, the first one will be removed.
399 |     /// If none is found, then this method is a no-op.
400 |     ///
warning: 'SystemMouseCursors' doesn't exist at '/Shaft/MouseCursorManager/init(fallbackMouseCursor:)'
  --> Sources/Shaft/Services/MouseCursor.swift:17:11-17:29
15 |     ///
16 |     /// The `fallbackMouseCursor` must not be ``MouseCursor/defer`` (typically
17 +     /// ``SystemMouseCursors/basic``).
18 |     public init(fallbackMouseCursor: MouseCursor) {
19 |         precondition(fallbackMouseCursor != MouseCursor.defer)
warning: 'SystemMouseCursors' doesn't exist at '/Shaft/MouseCursor'
  --> Sources/Shaft/Services/MouseCursor.swift:95:22-95:40
93 | /// moves), ``MouseTracker`` finds the _active cursor_ of each mouse device, which
94 | /// is the front-most region associated with the position of each mouse cursor,
95 + /// or defaults to ``SystemMouseCursors/basic`` if no cursors are associated with
96 | /// the position. ``MouseTracker`` changes the cursor of the pointer if the new
97 | /// active cursor is different from the previous active cursor, whose effect is
warning: 'addActionListener' doesn't exist at '/Shaft/Action'
  --> Sources/Shaft/Widgets/Actions.swift:27:51-27:68
25 | /// action's state.
26 | ///
27 + /// To register an action listener, call ``Action/addActionListener``.
   |                                                   ├─suggestion: Replace 'addActionListener' with 'addActionListener(_:callback:)'
   |                                                   ├─suggestion: Replace 'addActionListener' with 'notifyActionListeners()'
   |                                                   ╰─suggestion: Replace 'addActionListener' with 'removeActionListener(_:)'
28 | public typealias ActionListenerCallback = (any ActionProtocol) -> Void
29 |
warning: 'ContextAction' doesn't exist at '/Shaft/ActionProtocol/isEnabled(_:context:)'
  --> Sources/Shaft/Widgets/Actions.swift:40:11-40:24
38 |     ///
39 |     /// If the action's enable state depends on a ``BuildContext``, subclass
40 +     /// ``ContextAction`` instead of ``Action``.
41 |     func isEnabled(_ intent: IntentType, context: BuildContext?) -> Bool
42 |
warning: 'invoke' doesn't exist at '/Shaft/Actions'
  --> Sources/Shaft/Widgets/Actions.swift:46:19-46:25
44 |     ///
45 |     /// This is called by the ``ActionDispatcher`` when an action is invoked via
46 +     /// ``Actions/invoke``, or when an action is invoked using
   |                   ╰─suggestion: Replace 'invoke' with 'invoke(_:_:)'
47 |     /// ``ActionDispatcher/invokeAction`` directly.
48 |     ///
warning: 'invokeAction' doesn't exist at '/Shaft/ActionDispatcher'
  --> Sources/Shaft/Widgets/Actions.swift:47:28-47:40
45 |     /// This is called by the ``ActionDispatcher`` when an action is invoked via
46 |     /// ``Actions/invoke``, or when an action is invoked using
47 +     /// ``ActionDispatcher/invokeAction`` directly.
   |                            ├─suggestion: Replace 'invokeAction' with 'invokeAction(_:_:_:)'
   |                            ╰─suggestion: Replace 'invokeAction' with 'invokeActionIfEnabled(_:_:_:)'
48 |     ///
49 |     /// This method is only meant to be invoked by an ``ActionDispatcher``, or by
warning: 'invoke' doesn't exist at '/Shaft/Actions'
  --> Sources/Shaft/Widgets/Actions.swift:75:19-75:25
73 |     ///
74 |     /// To receive the result of invoking an action, it must be invoked using
75 +     /// ``Actions/invoke``, or by invoking it using an ``ActionDispatcher``. An action
   |                   ╰─suggestion: Replace 'invoke' with 'invoke(_:_:)'
76 |     /// invoked via a [Shortcuts] widget will have its return value ignored.
77 |     ///
warning: 'ContextAction' doesn't exist at '/Shaft/ActionProtocol/invoke(_:context:)'
  --> Sources/Shaft/Widgets/Actions.swift:79:11-79:24
77 |     ///
78 |     /// If the action's behavior depends on a ``BuildContext``, subclass
79 +     /// ``ContextAction`` instead of ``Action``.
80 |     func invoke(_ intent: IntentType, context: BuildContext?) -> Any?
81 |
warning: 'ContextAction' doesn't exist at '/Shaft/ActionDispatcher'
   --> Sources/Shaft/Widgets/Actions.swift:423:11-423:24
421 | /// method on the ``Action`` object.
422 | ///
423 + /// For ``ContextAction`` actions, if no `context` is provided, the
424 | /// ``BuildContext`` of the [primaryFocus] is used instead.
425 | ///
warning: 'ContextAction' doesn't exist at '/Shaft/ActionDispatcher/invokeAction(_:_:_:)'
   --> Sources/Shaft/Widgets/Actions.swift:439:27-439:40
437 |     ///
438 |     /// The action will be invoked with the given `context`, if given, but only if
439 +     /// the action is a ``ContextAction`` subclass. If no `context` is given, and
440 |     /// the action is a ``ContextAction``, then the context from the [primaryFocus]
441 |     /// is used.
warning: 'ContextAction' doesn't exist at '/Shaft/ActionDispatcher/invokeAction(_:_:_:)'
   --> Sources/Shaft/Widgets/Actions.swift:440:27-440:40
438 |     /// The action will be invoked with the given `context`, if given, but only if
439 |     /// the action is a ``ContextAction`` subclass. If no `context` is given, and
440 +     /// the action is a ``ContextAction``, then the context from the [primaryFocus]
441 |     /// is used.
442 |     ///
warning: 'ContextAction' doesn't exist at '/Shaft/ActionDispatcher/invokeAction(_:_:_:)'
   --> Sources/Shaft/Widgets/Actions.swift:447:43-447:56
445 |     /// The caller must receive a `true` result from [Action.isEnabled] before
446 |     /// calling this function (or [ContextAction.isEnabled] with the same
447 +     /// `context`, if the `action` is a ``ContextAction``). This function will
448 |     /// assert if the action is not enabled when called.
449 |     ///
warning: 'ContextAction' doesn't exist at '/Shaft/ActionDispatcher/invokeActionIfEnabled(_:_:_:)'
   --> Sources/Shaft/Widgets/Actions.swift:469:27-469:40
467 |     ///
468 |     /// The action will be invoked with the given `context`, if given, but only if
469 +     /// the action is a ``ContextAction`` subclass. If no `context` is given, and
470 |     /// the action is a ``ContextAction``, then the context from the [primaryFocus]
471 |     /// is used.
warning: 'ContextAction' doesn't exist at '/Shaft/ActionDispatcher/invokeActionIfEnabled(_:_:_:)'
   --> Sources/Shaft/Widgets/Actions.swift:470:27-470:40
468 |     /// The action will be invoked with the given `context`, if given, but only if
469 |     /// the action is a ``ContextAction`` subclass. If no `context` is given, and
470 +     /// the action is a ``ContextAction``, then the context from the [primaryFocus]
471 |     /// is used.
472 |     ///
warning: 'invoke' doesn't exist at '/Shaft/Actions'
   --> Sources/Shaft/Widgets/Actions.swift:497:21-497:27
495 | ///
496 | /// Actions are typically invoked using [Shortcuts]. They can also be invoked
497 + /// using ``Actions/invoke`` on a context containing an ambient [Actions] widget.
    |                     ╰─suggestion: Replace 'invoke' with 'invoke(_:_:)'
498 | ///
499 | /// See also:
warning: 'RotatedBox' doesn't exist at '/Shaft/Transform'
  --> Sources/Shaft/Widgets/Basic.swift:13:14-13:24
11 | /// A widget that applies a transformation before painting its child.
12 | ///
13 + /// Unlike ``RotatedBox``, which applies a rotation prior to layout, this object
14 | /// applies its transformation just prior to painting, which means the
15 | /// transformation is not taken into account when calculating how much space
warning: 'RotatedBox' doesn't exist at '/Shaft/Transform'
  --> Sources/Shaft/Widgets/Basic.swift:22:10-22:20
20 | /// See also:
21 | ///
22 + ///  * ``RotatedBox``, which rotates the child widget during layout, not just
23 | ///    during painting.
24 | ///  * ``FractionalTranslation``, which applies a translation to the child
warning: 'FractionalTranslation' doesn't exist at '/Shaft/Transform'
  --> Sources/Shaft/Widgets/Basic.swift:24:10-24:31
22 | ///  * ``RotatedBox``, which rotates the child widget during layout, not just
23 | ///    during painting.
24 + ///  * ``FractionalTranslation``, which applies a translation to the child
25 | ///    that is relative to the child's size.
26 | ///  * ``FittedBox``, which sizes and positions its child widget to fit the parent
warning: 'FittedBox' doesn't exist at '/Shaft/Transform'
  --> Sources/Shaft/Widgets/Basic.swift:26:10-26:19
24 | ///  * ``FractionalTranslation``, which applies a translation to the child
25 | ///    that is relative to the child's size.
26 + ///  * ``FittedBox``, which sizes and positions its child widget to fit the parent
27 | ///    according to a given ``BoxFit`` discipline.
28 | ///  * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).
warning: 'RotationTransition' doesn't exist at '/Shaft/Transform/init(angle:origin:alignment:transformHitTests:filterQuality:child:)'
  --> Sources/Shaft/Widgets/Basic.swift:54:14-54:32
52 |     /// See also:
53 |     ///
54 +     ///  * ``RotationTransition``, which animates changes in rotation smoothly
55 |     ///    over a given duration.
56 |     public init(
warning: 'ScaleTransition' doesn't exist at '/Shaft/Transform/init(scale:scaleX:scaleY:origin:alignment:transformHitTests:filterQuality:child:)'
   --> Sources/Shaft/Widgets/Basic.swift:108:13-108:28
106 |     /// See also:
107 |     ///
108 +     /// * ``ScaleTransition``, which animates changes in scale smoothly over a given
109 |     ///   duration.
110 |     public init(
warning: 'FittedBox' doesn't exist at '/Shaft/ClipRRect'
    --> Sources/Shaft/Widgets/Basic.swift:2332:65-2332:74
2330 | /// When a [ClipRRect] is bigger than the child it contains, its rounded corners
2331 | /// could be drawn in unexpected positions. Make sure that [ClipRRect] and its child
2332 + /// have the same bounds (by shrinking the [ClipRRect] with a ``FittedBox`` or by
2333 | /// growing the child).
2334 | ///
warning: 'runApp' doesn't exist at '/Shaft/WidgetsBinding/rootElement'
   --> Sources/Shaft/Widgets/Binding/WidgetsBinding.swift:129:46-129:52
127 |     /// The ``Element`` that is at the root of the element tree hierarchy.
128 |     ///
129 +     /// This is initialized the first time ``runApp`` is called.
130 |     public private(set) var rootElement: Element?
131 |
warning: 'runApp' doesn't exist at '/Shaft/runApp(_:view:)'
   --> Sources/Shaft/Widgets/Binding/WidgetsBinding.swift:579:15-579:21
577 | /// your widget, you can also use the [Center] widget.
578 | ///
579 + /// Calling ``runApp`` again will detach the previous root widget from the screen
580 | /// and attach the given widget in its place. The new widget tree is compared
581 | /// against the previous widget tree and any differences are applied to the
warning: 'update' doesn't exist at '/Shaft/ProxyElement/notifyClients(_:)'
    --> Sources/Shaft/Widgets/Framework/Framework.swift:2730:25-2730:31
2728 |     /// changed.
2729 |     ///
2730 +     /// Called during ``update`` (via ``updated``) after changing the widget
2731 |     /// associated with this element but before rebuilding this element.
2732 |     open func notifyClients(_ oldWidget: ProxyWidget) {}
warning: 'updated' doesn't exist at '/Shaft/ProxyElement/notifyClients(_:)'
    --> Sources/Shaft/Widgets/Framework/Framework.swift:2730:41-2730:48
2728 |     /// changed.
2729 |     ///
2730 +     /// Called during ``update`` (via ``updated``) after changing the widget
2731 |     /// associated with this element but before rebuilding this element.
2732 |     open func notifyClients(_ oldWidget: ProxyWidget) {}
warning: 'updateShouldNotify' doesn't exist at '/Shaft/InheritedWidget'
 --> Sources/Shaft/Widgets/InheritedModel.swift:6:52-6:70
4 | ///
5 | /// An inherited widget's dependents are unconditionally rebuilt when the
6 + /// inherited widget changes per ``InheritedWidget/updateShouldNotify``. This
  |                                                    ╰─suggestion: Replace 'updateShouldNotify' with 'updateShouldNotify(_:)'
7 | /// widget is similar except that dependents aren't rebuilt unconditionally.
8 | ///
warning: 'inheritFrom' doesn't exist at '/Shaft/InheritedModel'
  --> Sources/Shaft/Widgets/InheritedModel.swift:19:22-19:33
17 | ///
18 | /// Widgets create a dependency on an ``InheritedModel`` with a static method:
19 + /// ``InheritedModel/inheritFrom``. This method's `context` parameter defines the
   |                      ╰─suggestion: Replace 'inheritFrom' with 'inheritFrom(_:context:aspect:)'
20 | /// subtree that will be rebuilt when the model changes. Typically the
21 | /// `inheritFrom` method is called from a model-specific static `maybeOf` or
warning: 'updateShouldNotifyDependent' doesn't exist at '/Shaft/InheritedModel'
  --> Sources/Shaft/Widgets/InheritedModel.swift:52:7-52:34
50 | ///
51 | /// In the previous example the dependencies checked by
52 + /// ``updateShouldNotifyDependent`` are just the aspect strings passed to
   |       ╰─suggestion: Replace 'updateShouldNotifyDependent' with 'updateShouldNotifyDependent(_:_:)'
53 | /// `dependOnInheritedWidgetOfExactType`. They're represented as a ``Set`` because
54 | /// one Widget can depend on more than one aspect of the model. If a widget
warning: 'Set' doesn't exist at '/Shaft/InheritedModel'
  --> Sources/Shaft/Widgets/InheritedModel.swift:53:70-53:73
51 | /// In the previous example the dependencies checked by
52 | /// ``updateShouldNotifyDependent`` are just the aspect strings passed to
53 + /// `dependOnInheritedWidgetOfExactType`. They're represented as a ``Set`` because
54 | /// one Widget can depend on more than one aspect of the model. If a widget
55 | /// depends on the model but doesn't specify an aspect, then changes in the
warning: 'updateShouldNotifyDependent' doesn't exist at '/Shaft/InheritedModel/inheritFrom(_:context:aspect:)'
   --> Sources/Shaft/Widgets/InheritedModel.swift:129:24-129:51
127 |     ///
128 |     /// When the given [aspect] of the model changes, the [context] will be
129 +     /// rebuilt. The ``updateShouldNotifyDependent`` method must determine if a
130 |     /// change in the model widget corresponds to an [aspect] value.
131 |     ///
warning: 'updateShouldNotifyDependent' doesn't exist at '/Shaft/MediaQuery/inheritFrom(_:context:aspect:)'
   --> Sources/Shaft/Widgets/InheritedModel.swift:129:24-129:51
127 |     ///
128 |     /// When the given [aspect] of the model changes, the [context] will be
129 +     /// rebuilt. The ``updateShouldNotifyDependent`` method must determine if a
130 |     /// change in the model widget corresponds to an [aspect] value.
131 |     ///
warning: 'of' doesn't exist at '/Shaft/MediaQuery'
  --> Sources/Shaft/Widgets/MediaQuery.swift:21:26-21:28
19 | ///
20 | /// To obtain the entire current ``MediaQueryData`` for a given ``BuildContext``,
21 + /// use the ``MediaQuery/of`` function. This can be useful if you are going to use
22 | /// ``copyWith`` to replace the ``MediaQueryData`` with one with an updated
23 | /// property.
warning: 'copyWith' doesn't exist at '/Shaft/MediaQueryData'
  --> Sources/Shaft/Widgets/MediaQuery.swift:22:7-22:15
20 | /// To obtain the entire current ``MediaQueryData`` for a given ``BuildContext``,
21 | /// use the ``MediaQuery/of`` function. This can be useful if you are going to use
22 + /// ``copyWith`` to replace the ``MediaQueryData`` with one with an updated
23 | /// property.
24 | ///
warning: 'of' doesn't exist at '/Shaft/MediaQuery'
   --> Sources/Shaft/Widgets/MediaQuery.swift:152:34-152:36
150 |     /// updated.
151 |     ///
152 +     /// In general, ``MediaQuery/of``, and its associated "...Of" methods, are the
153 |     /// appropriate way to obtain ``MediaQueryData`` from a widget. This `fromView`
154 |     /// constructor is primarily for use in the implementation of the framework
warning: 'of```.size` to get the size, since the former will only notify of changes in [size], while the latter will notify for all ' doesn't exist at '/Shaft/MediaQuery'
   --> Sources/Shaft/Widgets/MediaQuery.swift:216:60-216:182
214 |     /// [devicePixelRatio].
215 |     ///
216 +     /// Prefer using [MediaQuery.sizeOf] over ``MediaQuery/of```.size` to get the
217 |     /// size, since the former will only notify of changes in [size], while the
218 |     /// latter will notify for all ``MediaQueryData`` changes.
warning: 'of' doesn't exist at '/Shaft/MediaQuery'
   --> Sources/Shaft/Widgets/MediaQuery.swift:700:33-700:35
698 | ///
699 | /// {@template flutter.widgets.media_query.MediaQuery.useSpecific}
700 + /// Querying using ``MediaQuery/of`` will cause your widget to rebuild
701 | /// automatically whenever _any_ field of the ``MediaQueryData`` changes (e.g., if
702 | /// the user rotates their device). Therefore, unless you are concerned with the
warning: 'of' doesn't exist at '/Shaft/MediaQuery'
   --> Sources/Shaft/Widgets/MediaQuery.swift:707:56-707:58
705 | /// rebuild more efficiently.
706 | ///
707 + /// If no ``MediaQuery`` is in scope then ``MediaQuery/of`` and the "...Of" methods
708 | /// similar to [MediaQuery.sizeOf] will throw an exception. Alternatively, the
709 | /// "maybe-" variant methods (such as [MediaQuery.maybeOf] and
warning: 'of' doesn't exist at '/Shaft/MediaQuery'
    --> Sources/Shaft/Widgets/MediaQuery.swift:1007:45-1007:47
1005 |     ///
1006 |     /// Use this function if you want to allow situations where no ``MediaQuery`` is
1007 +     /// in scope. Prefer using ``MediaQuery/of`` in situations where a media query
1008 |     /// is always expected to exist.
1009 |     ///
warning: 'List' doesn't exist at '/Shaft/SliverChildDelegate'
  --> Sources/Shaft/Widgets/Scroll/ScrollDelegate.swift:23:37-23:41
21 | /// Many slivers lazily construct their box children to avoid creating more
22 | /// children than are visible through the ``Viewport``. Rather than receiving
23 + /// their children as an explicit ``List``, they receive their children using a
24 | /// ``SliverChildDelegate``.
25 | ///
warning: 'applyTo' doesn't exist at '/Shaft/ScrollPhysics'
  --> Sources/Shaft/Widgets/Scroll/ScrollPhysics.swift:59:55-59:62
57 | /// ```
58 | ///
59 + /// When implementing a subclass, you must override ``applyTo`` so that it returns
   |                                                       ╰─suggestion: Replace 'applyTo' with 'applyTo(_:)'
60 | /// an appropriate instance of your subclass.  Otherwise, classes like
61 | /// ``Scrollable`` that inform a ``ScrollPosition`` will combine them with
warning: 'applyTo' doesn't exist at '/Shaft/ScrollPhysics/applyTo(_:)'
   --> Sources/Shaft/Widgets/Scroll/ScrollPhysics.swift:125:27-125:34
123 |     /// object. This is inefficient.
124 |     ///
125 +     /// ## Implementing ``applyTo``
126 |     ///
127 |     /// When creating a custom ``ScrollPhysics`` subclass, this method
warning: 'applyTo' doesn't exist at '/Shaft/ScrollPhysics/applyTo(_:)'
   --> Sources/Shaft/Widgets/Scroll/ScrollPhysics.swift:152:74-152:81
150 |     /// See also:
151 |     ///
152 +     ///  * [buildParent], a utility method that's often used to define ``applyTo``
153 |     ///    methods for ``ScrollPhysics`` subclasses.
154 |     public func applyTo(_ ancestor: ScrollPhysics?) -> ScrollPhysics {
warning: 'ScrollView' doesn't exist at '/Shaft/ScrollViewKeyboardDismissBehavior'
 --> Sources/Shaft/Widgets/ScrollView.swift:1:33-1:43
1 + /// A representation of how a ``ScrollView`` should dismiss the on-screen
2 | /// keyboard.
3 | public enum ScrollViewKeyboardDismissBehavior {
warning: 'ScrollView' doesn't exist at '/Shaft/ScrollViewKeyboardDismissBehavior/onDrag'
 --> Sources/Shaft/Widgets/ScrollView.swift:7:35-7:45
5 |     /// It is up to the client to dismiss the keyboard.
6 |     case manual
7 +     /// `onDrag` means that the ``ScrollView`` will dismiss an on-screen keyboard
8 |     /// when a drag begins.
9 |     case onDrag
warning: 'ScrollView' doesn't exist at '/Shaft/ScrollViewBase'
  --> Sources/Shaft/Widgets/ScrollView.swift:25:7-25:17
23 | ///     various scrolling effects, such as lists, grids, and expanding headers.
24 | ///
25 + /// ``ScrollView`` helps orchestrate these pieces by creating the ``Scrollable`` and
26 | /// the viewport and deferring to its subclass to create the slivers.
27 | ///
warning: 'PageStorage' doesn't exist at '/Shaft/ScrollViewBase'
  --> Sources/Shaft/Widgets/ScrollView.swift:36:67-36:78
34 | /// ## Persisting the scroll position during a session
35 | ///
36 + /// Scroll views attempt to persist their scroll position using ``PageStorage``.
37 | /// This can be disabled by setting [ScrollController.keepScrollOffset] to false
38 | /// on the ``controller``. If it is enabled, using a [PageStorageKey] for the
warning: 'ScrollView' doesn't exist at '/Shaft/ScrollViewBase'
  --> Sources/Shaft/Widgets/ScrollView.swift:45:47-45:57
43 | /// See also:
44 | ///
45 + ///  * [ListView], which is a commonly used ``ScrollView`` that displays a
46 | ///    scrolling, linear list of child widgets.
47 | ///  * [PageView], which is a scrolling list of child widgets that are each the
warning: 'ScrollView' doesn't exist at '/Shaft/ScrollViewBase'
  --> Sources/Shaft/Widgets/ScrollView.swift:49:33-49:43
47 | ///  * [PageView], which is a scrolling list of child widgets that are each the
48 | ///    size of the viewport.
49 + ///  * [GridView], which is a ``ScrollView`` that displays a scrolling, 2D array
50 | ///    of child widgets.
51 | ///  * [CustomScrollView], which is a ``ScrollView`` that creates custom scroll
warning: 'ScrollView' doesn't exist at '/Shaft/ScrollViewBase'
  --> Sources/Shaft/Widgets/ScrollView.swift:51:41-51:51
49 | ///  * [GridView], which is a ``ScrollView`` that displays a scrolling, 2D array
50 | ///    of child widgets.
51 + ///  * [CustomScrollView], which is a ``ScrollView`` that creates custom scroll
52 | ///    effects using slivers.
53 | ///  * [ScrollNotification] and [NotificationListener], which can be used to watch
warning: 'ScrollView' doesn't exist at '/Shaft/ScrollViewBase'
  --> Sources/Shaft/Widgets/ScrollView.swift:55:64-55:74
53 | ///  * [ScrollNotification] and [NotificationListener], which can be used to watch
54 | ///    the scroll position without using a [ScrollController].
55 + ///  * [TwoDimensionalScrollView], which is a similar widget ``ScrollView`` that
56 | ///    scrolls in two dimensions.
57 | public class ScrollViewBase: StatelessWidget {
warning: 'PageStorage' doesn't exist at '/Shaft/ScrollViewBase/controller'
   --> Sources/Shaft/Widgets/ScrollView.swift:153:55-153:66
151 |     /// the initial scroll position (see ``ScrollController/initialScrollOffset``).
152 |     /// It can be used to control whether the scroll view should automatically
153 +     /// save and restore its scroll position in the ``PageStorage`` (see
154 |     /// [ScrollController.keepScrollOffset]). It can be used to read the current
155 |     /// scroll position (see [ScrollController.offset]), or change it (see
warning: 'ScrollView' doesn't exist at '/Shaft/ScrollViewBase/center'
   --> Sources/Shaft/Widgets/ScrollView.swift:270:41-270:51
268 |     /// The [center] must be the key of one of the slivers built by [buildSlivers].
269 |     ///
270 +     /// Of the built-in subclasses of ``ScrollView``, only [CustomScrollView]
271 |     /// supports [center]; for that class, the given key must be the key of one of
272 |     /// the slivers in the ``CustomScrollView/slivers`` list.
warning: 'ScrollView' doesn't exist at '/Shaft/ScrollViewBase/semanticChildCount'
   --> Sources/Shaft/Widgets/ScrollView.swift:303:28-303:38
301 |     /// The number of children that will contribute semantic information.
302 |     ///
303 +     /// Some subtypes of ``ScrollView`` can infer this value automatically. For
304 |     /// example [ListView] will use the number of widgets in the child list,
305 |     /// while the [ListView.separated] constructor will use half that amount.
warning: 'ScrollView' doesn't exist at '/Shaft/ScrollViewBase/keyboardDismissBehavior'
   --> Sources/Shaft/Widgets/ScrollView.swift:318:68-318:78
316 |     public let dragStartBehavior: DragStartBehavior
317 |
318 +     /// [ScrollViewKeyboardDismissBehavior] the defines how this ``ScrollView`` will
319 |     /// dismiss the keyboard automatically.
320 |     public let keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior
warning: 'ScrollView' doesn't exist at '/Shaft/CustomScrollView'
   --> Sources/Shaft/Widgets/ScrollView.swift:469:9-469:19
467 | }
468 |
469 + /// A ``ScrollView`` that creates custom scroll effects using [slivers].
470 | ///
471 | /// A [CustomScrollView] lets you supply [slivers] directly to create various
warning: 'controller' doesn't exist at '/Shaft/CustomScrollView'
   --> Sources/Shaft/Widgets/ScrollView.swift:480:7-480:17
478 | ///
479 | /// To control the initial scroll offset of the scroll view, provide a
480 + /// ``controller`` with its ``ScrollController/initialScrollOffset`` property set.
481 | ///
482 | /// {@animation 400 376 https://flutter.github.io/assets-for-api-docs/assets/widgets/custom_scroll_view.mp4}
warning: 'ScrollView' doesn't exist at '/Shaft/CustomScrollView/init(key:scrollDirection:reverse:controller:primary:physics:scrollBehavior:shrinkWrap:center:anchor:cacheExtent:semanticChildCount:dragStartBehavior:keyboardDismissBehavior:restorationId:clipBehavior:hitTestBehavior:slivers:)'
   --> Sources/Shaft/Widgets/ScrollView.swift:533:21-533:31
531 | ///    for scroll announcements.
532 | public class CustomScrollView: ScrollViewBase {
533 +     /// Creates a ``ScrollView`` that creates custom scroll effects using slivers.
534 |     ///
535 |     /// See the ``ScrollView`` constructor for more details on these arguments.
warning: 'ScrollView' doesn't exist at '/Shaft/CustomScrollView/init(key:scrollDirection:reverse:controller:primary:physics:scrollBehavior:shrinkWrap:center:anchor:cacheExtent:semanticChildCount:dragStartBehavior:keyboardDismissBehavior:restorationId:clipBehavior:hitTestBehavior:slivers:)'
   --> Sources/Shaft/Widgets/ScrollView.swift:535:19-535:29
533 |     /// Creates a ``ScrollView`` that creates custom scroll effects using slivers.
534 |     ///
535 +     /// See the ``ScrollView`` constructor for more details on these arguments.
536 |     public init(
537 |         key: (any Key)? = nil,
warning: 'ScrollView' doesn't exist at '/Shaft/BoxScrollView'
   --> Sources/Shaft/Widgets/ScrollView.swift:681:9-681:19
679 | }
680 |
681 + /// A ``ScrollView`` that uses a single child layout model.
682 | ///
683 | /// {@template flutter.widgets.BoxScroll.scrollBehaviour}
warning: 'ScrollView' doesn't exist at '/Shaft/BoxScrollView'
   --> Sources/Shaft/Widgets/ScrollView.swift:684:7-684:17
682 | ///
683 | /// {@template flutter.widgets.BoxScroll.scrollBehaviour}
684 + /// ``ScrollView``s are often decorated with [Scrollbar]s and overscroll indicators,
685 | /// which are managed by the inherited [ScrollBehavior]. Placing a
686 | /// [ScrollConfiguration] above a ScrollView can modify these behaviors for that
warning: 'ScrollView' doesn't exist at '/Shaft/BoxScrollView/init(key:scrollDirection:reverse:controller:primary:physics:shrinkWrap:padding:cacheExtent:semanticChildCount:dragStartBehavior:keyboardDismissBehavior:restorationId:clipBehavior:hitTestBehavior:)'
   --> Sources/Shaft/Widgets/ScrollView.swift:698:21-698:31
696 | ///    single scroll view.
697 | public class BoxScrollView: ScrollViewBase {
698 +     /// Creates a ``ScrollView`` uses a single child layout model.
699 |     ///
700 |     /// If the [primary] argument is true, the ``controller`` must be null.
warning: 'controller' doesn't exist at '/Shaft/BoxScrollView/init(key:scrollDirection:reverse:controller:primary:physics:shrinkWrap:padding:cacheExtent:semanticChildCount:dragStartBehavior:keyboardDismissBehavior:restorationId:clipBehavior:hitTestBehavior:)'
   --> Sources/Shaft/Widgets/ScrollView.swift:700:50-700:60
698 |     /// Creates a ``ScrollView`` uses a single child layout model.
699 |     ///
700 +     /// If the [primary] argument is true, the ``controller`` must be null.
701 |     public init(
702 |         key: (any Key)? = nil,
warning: 'controller' doesn't exist at '/Shaft/ListView'
   --> Sources/Shaft/Widgets/ScrollView.swift:831:7-831:17
829 | ///
830 | /// To control the initial scroll offset of the scroll view, provide a
831 + /// ``controller`` with its ``ScrollController/initialScrollOffset`` property set.
832 | ///
833 | /// By default, [ListView] will automatically pad the list's scrollable
warning: 'controller' doesn't exist at '/Shaft/ListView'
    --> Sources/Shaft/Widgets/ScrollView.swift:1006:48-1006:58
1004 | /// [ListView] to using [CustomScrollView] directly.
1005 | ///
1006 + /// The [key], [scrollDirection], [reverse], ``controller``, [primary], [physics],
1007 | /// and [shrinkWrap] properties on [ListView] map directly to the identically
1008 | /// named properties on [CustomScrollView].
warning: 'ScrollView' doesn't exist at '/Shaft/ListView/init(key:scrollDirection:reverse:controller:primary:physics:shrinkWrap:padding:itemExtent:itemExtentBuilder:prototypeItem:itemBuilder:findChildIndexCallback:itemCount:addAutomaticKeepAlives:addRepaintBoundaries:addSemanticIndexes:cacheExtent:semanticChildCount:dragStartBehavior:keyboardDismissBehavior:restorationId:clipBehavior:hitTestBehavior:)'
    --> Sources/Shaft/Widgets/ScrollView.swift:1238:54-1238:64
1236 |     /// will stop calling `itemBuilder`, even if it has yet to reach `itemCount`.
1237 |     /// By returning `null`, the [ScrollPosition.maxScrollExtent] will not be accurate
1238 +     /// unless the user has reached the end of the ``ScrollView``. This can also cause the
1239 |     /// [Scrollbar] to grow as the user scrolls.
1240 |     ///
warning: 'controller' doesn't exist at '/Shaft/GridView'
    --> Sources/Shaft/Widgets/ScrollView.swift:1611:7-1611:17
1609 | ///
1610 | /// To control the initial scroll offset of the scroll view, provide a
1611 + /// ``controller`` with its ``ScrollController/initialScrollOffset`` property set.
1612 | ///
1613 | /// ## Transitioning to [CustomScrollView]
warning: 'controller' doesn't exist at '/Shaft/GridView'
    --> Sources/Shaft/Widgets/ScrollView.swift:1623:48-1623:58
1621 | /// [GridView] to using [CustomScrollView] directly.
1622 | ///
1623 + /// The [key], [scrollDirection], [reverse], ``controller``, [primary], [physics],
1624 | /// and [shrinkWrap] properties on [GridView] map directly to the identically
1625 | /// named properties on [CustomScrollView].
warning: 'TextInputConfiguration.enableSuggestions' doesn't exist at '/Shaft/EditableText/enableSuggestions'
   --> Sources/Shaft/Widgets/Text/EditableText.swift:423:16-423:56
421 |     // public let smartQuotesType: SmartQuotesType
422 |
423 +     /// See: ``TextInputConfiguration.enableSuggestions``
424 |     public let enableSuggestions: Bool
425 |
warning: 'SelectionOverlay.onSelectionHandleTapped' doesn't exist at '/Shaft/EditableText/onSelectionHandleTapped'
   --> Sources/Shaft/Widgets/Text/EditableText.swift:800:16-800:56
798 |     public let onSelectionChanged: SelectionChangedCallback?
799 |
800 +     /// See: ``SelectionOverlay.onSelectionHandleTapped``
801 |     public let onSelectionHandleTapped: VoidCallback?
802 |
warning: 'RenderEditable.cursorOffset' doesn't exist at '/Shaft/EditableText/cursorOffset'
   --> Sources/Shaft/Widgets/Text/EditableText.swift:908:16-908:43
906 |     public let cursorOpacityAnimates: Bool
907 |
908 +     /// See: ``RenderEditable.cursorOffset``
909 |     public let cursorOffset: Offset?
910 |
warning: 'RenderEditable.paintCursorAboveText' doesn't exist at '/Shaft/EditableText/paintCursorAboveText'
   --> Sources/Shaft/Widgets/Text/EditableText.swift:911:16-911:51
909 |     public let cursorOffset: Offset?
910 |
911 +     /// See: ``RenderEditable.paintCursorAboveText``
912 |     public let paintCursorAboveText: Bool
913 |
warning: 'FlutterView' doesn't exist at '/Shaft/View'
  --> Sources/Shaft/Widgets/View.swift:9:67-9:78
7  | // found in the LICENSE file.
8  |
9  + /// Bootstraps a render tree that is rendered into the provided ``FlutterView``.
10 | ///
11 | /// The content rendered into that view is determined by the provided ``child``.
warning: 'LookupBoundary' doesn't exist at '/Shaft/View'
  --> Sources/Shaft/Widgets/View.swift:12:35-12:49
10 | ///
11 | /// The content rendered into that view is determined by the provided ``child``.
12 + /// Descendants within the same ``LookupBoundary`` can look up the view they are
13 | /// rendered into via ``View/of`` and ``View/maybeOf``.
14 | ///
warning: 'of' doesn't exist at '/Shaft/View'
  --> Sources/Shaft/Widgets/View.swift:13:30-13:32
11 | /// The content rendered into that view is determined by the provided ``child``.
12 | /// Descendants within the same ``LookupBoundary`` can look up the view they are
13 + /// rendered into via ``View/of`` and ``View/maybeOf``.
14 | ///
15 | /// The provided ``child`` is wrapped in a ``MediaQuery`` constructed from the given
warning: 'maybeOf' doesn't exist at '/Shaft/View'
  --> Sources/Shaft/Widgets/View.swift:13:46-13:53
11 | /// The content rendered into that view is determined by the provided ``child``.
12 | /// Descendants within the same ``LookupBoundary`` can look up the view they are
13 + /// rendered into via ``View/of`` and ``View/maybeOf``.
   |                                              ╰─suggestion: Replace 'maybeOf' with 'maybeOf(_:)'
14 | ///
15 | /// The provided ``child`` is wrapped in a ``MediaQuery`` constructed from the given
warning: 'of' doesn't exist at '/Shaft/MediaQuery'
  --> Sources/Shaft/Widgets/View.swift:18:44-18:46
16 | /// ``view``.
17 | ///
18 + /// For most use cases, using ``MediaQuery/of``, or its associated "...Of" methods
19 | /// are a more appropriate way of obtaining the information that a ``FlutterView``
20 | /// exposes. For example, using ``MediaQuery/sizeOf`` will expose the _logical_
warning: 'FlutterView' doesn't exist at '/Shaft/View'
  --> Sources/Shaft/Widgets/View.swift:19:70-19:81
17 | ///
18 | /// For most use cases, using ``MediaQuery/of``, or its associated "...Of" methods
19 + /// are a more appropriate way of obtaining the information that a ``FlutterView``
20 | /// exposes. For example, using ``MediaQuery/sizeOf`` will expose the _logical_
21 | /// device size ([MediaQueryData.size]) rather than the physical size
warning: 'sizeOf' doesn't exist at '/Shaft/MediaQuery'
  --> Sources/Shaft/Widgets/View.swift:20:46-20:52
18 | /// For most use cases, using ``MediaQuery/of``, or its associated "...Of" methods
19 | /// are a more appropriate way of obtaining the information that a ``FlutterView``
20 + /// exposes. For example, using ``MediaQuery/sizeOf`` will expose the _logical_
   |                                              ╰─suggestion: Replace 'sizeOf' with 'sizeOf(_:)'
21 | /// device size ([MediaQueryData.size]) rather than the physical size
22 | /// ([FlutterView.physicalSize]). Similarly, while [FlutterView.padding] conveys
warning: 'FlutterView' doesn't exist at '/Shaft/View'
  --> Sources/Shaft/Widgets/View.swift:28:12-28:23
26 | /// widget adjusts the values for its various children.
27 | ///
28 + /// Each ``FlutterView`` can be associated with at most one [View] widget in the
29 | /// widget tree. Two or more [View] widgets configured with the same
30 | /// ``FlutterView`` must never exist within the same widget tree at the same time.
warning: 'FlutterView' doesn't exist at '/Shaft/View'
  --> Sources/Shaft/Widgets/View.swift:30:7-30:18
28 | /// Each ``FlutterView`` can be associated with at most one [View] widget in the
29 | /// widget tree. Two or more [View] widgets configured with the same
30 + /// ``FlutterView`` must never exist within the same widget tree at the same time.
31 | /// This limitation is enforced by a [GlobalObjectKey] that derives its identity
32 | /// from the ``view`` provided to this widget.
Finished building documentation for 'Shaft' (5.53s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/shaftui/shaft/main
Building for debugging...
[0/7] Write snippet-extract-tool-entitlement.plist
[1/8] Write sources
[4/8] Write swift-version-49B95AFC49DCD68C.txt
[6/53] Compiling SymbolKit DeclarationFragments.swift
[7/53] Compiling SymbolKit Fragment.swift
[8/53] Compiling SymbolKit FragmentKind.swift
[9/53] Compiling SymbolKit FunctionParameter.swift
[10/53] Compiling SymbolKit FunctionSignature.swift
[11/57] Compiling SymbolKit Identifier.swift
[12/57] Compiling SymbolKit KindIdentifier.swift
[13/57] Compiling SymbolKit Location.swift
[14/57] Compiling SymbolKit Mutability.swift
[15/57] Compiling SymbolKit Mixin+Equals.swift
[16/57] Compiling SymbolKit Mixin+Hash.swift
[17/57] Compiling SymbolKit Mixin.swift
[18/57] Compiling SymbolKit LineList.swift
[19/57] Compiling SymbolKit Position.swift
[20/57] Compiling SymbolKit GenericConstraint.swift
[21/57] Compiling SymbolKit GenericParameter.swift
[22/57] Compiling SymbolKit Generics.swift
[23/57] Compiling SymbolKit Namespace.swift
[24/57] Compiling SymbolKit SemanticVersion.swift
[25/57] Compiling SymbolKit AccessControl.swift
[26/57] Compiling SymbolKit Availability.swift
[27/57] Compiling SymbolKit AvailabilityItem.swift
[28/57] Compiling SymbolKit Domain.swift
[29/57] Emitting module SymbolKit
[30/57] Compiling SymbolKit Names.swift
[31/57] Compiling SymbolKit SPI.swift
[32/57] Compiling SymbolKit Snippet.swift
[33/57] Compiling SymbolKit Extension.swift
[34/57] Compiling SymbolKit Relationship.swift
[35/57] Compiling SymbolKit RelationshipKind.swift
[36/57] Compiling SymbolKit SourceOrigin.swift
[37/57] Compiling SymbolKit GenericConstraints.swift
[38/57] Compiling SymbolKit Swift.swift
[39/57] Compiling SymbolKit SourceRange.swift
[40/57] Compiling SymbolKit Metadata.swift
[41/57] Compiling SymbolKit Module.swift
[42/57] Compiling SymbolKit OperatingSystem.swift
[43/57] Compiling SymbolKit Platform.swift
[44/57] Compiling SymbolKit Symbol.swift
[45/57] Compiling SymbolKit SymbolKind.swift
[46/57] Compiling SymbolKit SymbolGraph.swift
[47/57] Compiling SymbolKit GraphCollector.swift
[48/57] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[49/57] Compiling SymbolKit UnifiedSymbol.swift
[50/57] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[51/57] Compiling SymbolKit UnifiedSymbolGraph.swift
[52/57] Emitting module Snippets
[53/57] Compiling Snippets Snippet.swift
[54/57] Compiling Snippets SnippetParser.swift
[55/61] Compiling snippet_extract URL+Status.swift
[56/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[57/61] Emitting module snippet_extract
[58/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract-tool
[60/61] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (3.83s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'Shaft' complete! (3.09s)
Target:                   ShaftSetup
Extracting symbol information for 'ShaftSetup'...
Finished extracting symbol information for 'ShaftSetup'. (10.45s)
Building documentation for 'ShaftSetup'...
Finished building documentation for 'ShaftSetup' (0.05s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/shaftui/shaft/main
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (1.08s)
Building for debugging...
[0/2] Write swift-version-49B95AFC49DCD68C.txt
[1/2] Compiling CSkia utils.cpp
Build of target: 'ShaftSetup' complete! (4.27s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/shaftui/shaft/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/shaftui/shaft/main/linkable-paths.json
Target:                   CSkia
Extracting symbol information for 'CSkia'...
Finished extracting symbol information for 'CSkia'. (4.27s)
Building documentation for 'CSkia'...
Finished building documentation for 'CSkia' (0.05s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/shaftui/shaft/main
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (1.07s)
Building for debugging...
[0/1] Compiling CSkia utils.cpp
Build of target: 'CSkia' complete! (4.22s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/shaftui/shaft/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/shaftui/shaft/main/linkable-paths.json
Target:                   ShaftLucide
Extracting symbol information for 'ShaftLucide'...
Finished extracting symbol information for 'ShaftLucide'. (3.52s)
Building documentation for 'ShaftLucide'...
Finished building documentation for 'ShaftLucide' (0.07s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/shaftui/shaft/main
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (1.09s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'ShaftLucide' complete! (3.37s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/shaftui/shaft/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/shaftui/shaft/main/linkable-paths.json
Target:                   ShaftMarkdown
Extracting symbol information for 'ShaftMarkdown'...
Finished extracting symbol information for 'ShaftMarkdown'. (3.32s)
Building documentation for 'ShaftMarkdown'...
Finished building documentation for 'ShaftMarkdown' (0.12s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/shaftui/shaft/main
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (1.09s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'ShaftMarkdown' complete! (3.14s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/shaftui/shaft/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/shaftui/shaft/main/linkable-paths.json
Target:                   ShaftSDL3
Extracting symbol information for 'ShaftSDL3'...
Finished extracting symbol information for 'ShaftSDL3'. (3.58s)
Building documentation for 'ShaftSDL3'...
Finished building documentation for 'ShaftSDL3' (0.08s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/shaftui/shaft/main
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (1.06s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'ShaftSDL3' complete! (3.35s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/shaftui/shaft/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/shaftui/shaft/main/linkable-paths.json
Target:                   ShaftSkia
Extracting symbol information for 'ShaftSkia'...
Finished extracting symbol information for 'ShaftSkia'. (4.98s)
Building documentation for 'ShaftSkia'...
warning: 'Renderer' doesn't exist at '/ShaftSkia/SkiaGLRenderer'
  --> Sources/ShaftSkia/SkiaRenderer+GL.swift:9:28-9:36
7  | import Shaft
8  |
9  + /// An implementation of ``Renderer`` using Skia as the backend.
10 | public class SkiaGLRenderer: SkiaRenderer, GLRenderer {
11 |     /// Cached GrDirectContext for creating surfaces.
warning: 'Renderer' doesn't exist at '/ShaftSkia/SkiaRenderer'
  --> Sources/ShaftSkia/SkiaRenderer.swift:9:28-9:36
7  | import Shaft
8  |
9  + /// An implementation of ``Renderer`` using Skia as the backend.
10 | public class SkiaRenderer: Renderer {
11 |     public init() {
Finished building documentation for 'ShaftSkia' (0.11s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/shaftui/shaft/main
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (1.07s)
Building for debugging...
[0/2] Write swift-version-49B95AFC49DCD68C.txt
[1/2] Compiling CSkia utils.cpp
Build of target: 'ShaftSkia' complete! (4.18s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/shaftui/shaft/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/shaftui/shaft/main/linkable-paths.json
   18168
103	/Users/admin/builder/spi-builder-workspace/.docs/shaftui/shaft/main
✅  Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/shaftui/shaft/main
File count: 18168
Doc size:   103.0MB
Preparing doc bundle ...
Uploading prod-shaftui-shaft-main-61ea87fb.zip to s3://spi-docs-inbox/prod-shaftui-shaft-main-61ea87fb.zip
Copying... [10%]
Copying... [20%]
Copying... [30%]
Copying... [40%]
Copying... [50%]
Copying... [60%]
Copying... [70%]
Copying... [80%]
Copying... [90%]
Copying... [100%]
Done.